0 Replies Latest reply on Feb 2, 2016 11:55 AM by 3168153

    Setting up HDFS file data source in ODI

    3168153

      Hello,

       

      I'm trying to set up an HDFS file data source in ODI. I'm using the Big data lite virtual machine provided by Oracle, version 4.2.1. ODI version is 12.1.3.

       

      I'm following the steps found here http://docs.oracle.com/middleware/1221/odi/odi-big-data/integrate.htm#ODIBD135 (I have not found ODI-Big Data documentation for ODI 12.1.3).

       

      Step number 6 states:

      For HDFS files, create a Data Server object under File technology by entering the HDFS name node in the field JDBC URL and leave the JDBC Driver name empty. For example:
         hdfs://bda1node01.example.com:8020 

       

      Hence, I set up a File data server with no JDBC driver and entered hdfs://bigdatalite.localdomain:8020 in the JDBC URL field. I also created the logical and physical schema with directories hdfs://bigdatalite.localdomain:8020/user/oracle/test/ at both schema and work schema and linked both schemas at global context.

       

      The HDFS URI is valid, I can execute

      hadoop fs -ls hdfs://bigdatalite.localdomain:8020/user/test/

      and it shows that there is a file named test.txt, which I created.

       

      Next, I created a model of File technology and linked it to the logical schema I created. When I select the logical schema, ODI shows an error:

      ODI-20754 : Driver name cannot be empty 

      This is the stack trace of the error:

      java.lang.RuntimeException: java.lang.IllegalArgumentException: Driver class name must not be empty

          at oracle.odi.core.datasource.provider.AbstractDataSourceProvider.configure(AbstractDataSourceProvider.java:106)

          at oracle.odi.core.DataSourceManager$LoginTimeoutDataSourceProviderProxy.configure(DataSourceManager.java:305)

          at oracle.odi.core.DataSourceManager.createAndConfigureDataSourceProvider(DataSourceManager.java:231)

          at oracle.odi.core.DataSourceManager.access$000(DataSourceManager.java:57)

          at oracle.odi.core.DataSourceManager$1.create(DataSourceManager.java:76)

          at org.springframework.util.CachingMapDecorator.get(CachingMapDecorator.java:152)

          at java.util.Collections$SynchronizedMap.get(Collections.java:2037)

          at oracle.odi.core.DataSourceManager.getDataSource(DataSourceManager.java:153)

          at oracle.odi.core.OdiInstance.lookupDataSource(OdiInstance.java:1067)

          at oracle.odi.core.datasource.dwgobject.support.DwgConnectConnectionCreatorImpl.getDataSourceAdapter(DwgConnectConnectionCreatorImpl.java:124)

          at oracle.odi.core.datasource.dwgobject.support.DwgConnectConnectionCreatorImpl.createDwgConnectConnection(DwgConnectConnectionCreatorImpl.java:73)

          at com.sunopsis.dwg.reverse.Reverse.getLocalConnection(Reverse.java:1367)

          at com.sunopsis.dwg.reverse.Reverse.getSupportedObjectTypesList(Reverse.java:1341)

          at com.sunopsis.graphical.frame.edit.EditFrameSnpModel.displayReverseObjects(EditFrameSnpModel.java:3537)

          at com.sunopsis.graphical.frame.edit.EditFrameSnpModel.snpsComboBoxVctWorkSchema_ItemStateChanged(EditFrameSnpModel.java:3662)

          at com.sunopsis.graphical.frame.edit.EditFrameSnpModel$IvjEventHandler.itemStateChanged(EditFrameSnpModel.java:374)

          at javax.swing.JComboBox.fireItemStateChanged(JComboBox.java:1225)

          at javax.swing.JComboBox.selectedItemChanged(JComboBox.java:1282)

          at javax.swing.JComboBox.contentsChanged(JComboBox.java:1329)

          at javax.swing.AbstractListModel.fireContentsChanged(AbstractListModel.java:118)

          at javax.swing.DefaultComboBoxModel.setSelectedItem(DefaultComboBoxModel.java:93)

          at javax.swing.JComboBox.setSelectedItem(JComboBox.java:578)

          at oracle.cef.ui.component.ComboBox.setSelectedItem(ComboBox.java:375)

          at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:624)

          at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:835)

          at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)

          at java.awt.Component.processMouseEvent(Component.java:6516)

          at javax.swing.JComponent.processMouseEvent(JComponent.java:3321)

          at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:499)

          at java.awt.Component.processEvent(Component.java:6281)

          at java.awt.Container.processEvent(Container.java:2229)

          at java.awt.Component.dispatchEventImpl(Component.java:4872)

          at java.awt.Container.dispatchEventImpl(Container.java:2287)

          at java.awt.Component.dispatchEvent(Component.java:4698)

          at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)

          at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)

          at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)

          at java.awt.Container.dispatchEventImpl(Container.java:2273)

          at java.awt.Window.dispatchEventImpl(Window.java:2719)

          at java.awt.Component.dispatchEvent(Component.java:4698)

          at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:747)

          at java.awt.EventQueue.access$300(EventQueue.java:103)

          at java.awt.EventQueue$3.run(EventQueue.java:706)

          at java.awt.EventQueue$3.run(EventQueue.java:704)

          at java.security.AccessController.doPrivileged(Native Method)

          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)

          at java.awt.EventQueue$4.run(EventQueue.java:720)

          at java.awt.EventQueue$4.run(EventQueue.java:718)

          at java.security.AccessController.doPrivileged(Native Method)

          at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)

          at java.awt.EventQueue.dispatchEvent(EventQueue.java:717)

          at oracle.javatools.internal.ui.EventQueueWrapper._dispatchEvent(EventQueueWrapper.java:169)

          at oracle.javatools.internal.ui.EventQueueWrapper.dispatchEvent(EventQueueWrapper.java:151)

          at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)

          at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)

          at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)

          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)

          at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)

          at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

      Caused by: java.lang.IllegalArgumentException: Driver class name must not be empty

          at org.springframework.util.Assert.hasText(Assert.java:161)

          at oracle.odi.jdbc.datasource.DriverManagerDataSource.setDriverClassName(DriverManagerDataSource.java:170)

          at oracle.odi.jdbc.datasource.DriverManagerDataSource.<init>(DriverManagerDataSource.java:110)

          at oracle.odi.core.datasource.provider.DriverManagerDataSourceProvider.doCreateDataSource(DriverManagerDataSourceProvider.java:36)

          at oracle.odi.core.datasource.provider.AbstractDataSourceProvider.configure(AbstractDataSourceProvider.java:97)

          ... 59 more

       

       

       

      Any other thing I try (reverse engineer the attributes, view the data after manually setting the attributes, etc.) throws the same error.

       

      I also tried to leave the JDBC URL empty and set the driver to com.sunopsis.jdbc.driver.file.FileDriver, as in the HDFS Data Server provided with the virtual machine, but then the error is that the URL must not be empty.

       

      Thanks for any help,

       

      Guillermo