3 Replies Latest reply on Apr 25, 2019 1:58 PM by raffaello.galli

    Tableau SDK for Java (64 Bit) 10-3-8 does not support publish of hyper extracts

    JAWAHIR MOULANA AHAMED KASIM

      Running on Tableau 10.5 server, I am creating hyper extracts in .hyper format to be published as a datasource to one of our tableau Server. The latest SDk (10-3-8) does not seem to support this. but it works fine for .tde files.

       

      Are we expecting an upgrade or do we still need to push .tde instead of .hyper programmatically. ??

       

      Appreciate if anyone could throw some light on this!

       

      - Jawahir

        • 1. Re: Tableau SDK for Java (64 Bit) 10-3-8 does not support publish of hyper extracts
          Carisa Chang

          Hi Jawahir,

           

          Extract API 2.0 can create .hyper extracts - but you'll want to use the REST API to publish them.

          Previous versions of the Tableau SDK could create and publish .tde files, but are not able to create or publish .hyper files because it does not recognize the file format.

           

          https://onlinehelp.tableau.com/current/pro/desktop/en-us/help.html#extracting_TDE_API.html

          Starting in Tableau 10.5, you can use the Tableau Extract API 2.0 to create .hyper extracts.

          For other tasks that you previously performed using the Tableau SDK, such as publishing extracts, you can use the Tableau Server REST API or the Tableau Server Client (Python) library instead. You can also use the Tableau Server REST API to refresh extracts.

          If you're using Tableau 10.4 and earlier, you can continue to use the Tableau SDK to create .tde extracts and publish those extracts to Tableau Server. For more information, see the Tableau SDK documentation.

          Both the SDK and the Extract API 2.0 support Windows, Linux, and the Mac, using C, C++, Java, and Python.

          • 2. Re: Tableau SDK for Java (64 Bit) 10-3-8 does not support publish of hyper extracts
            raffaello.galli

            Carisa,

             

            I am using the Tableau Server Python SDK to generate .hyper extracts. I am trying to use the Tableau Server Java SDK because I want to see if I can have better performance instead of speed.
            Generating a 3.2GB .hyper file from CSV files takes up to 70 minutes using the Tableau Server Python SDK.

            Unfortunately I have issues with the Tableau Server Java SDK on a AWS EC2 c5.4xlarge instance (Linux AMI).

             

             

            This is the code:

             

            import com.tableausoftware.TableauException;

            import com.tableausoftware.extract.ExtractAPI;

             

            public class Test {

              public static void main(String[] args) {

              System.out.println("Test");

                try {

                  ExtractAPI.initialize();

                } catch (TableauException ex) {

                  }

              }

            }

             

             

            Those are the versions of java and javac:

             

            %> java -version

            openjdk version "1.8.0_201"

            OpenJDK Runtime Environment (build 1.8.0_201-b09)

            OpenJDK 64-Bit Server VM (build 25.201-b09, mixed mode)

            %> javac -version

            javac 1.8.0_201

             

            This is how I compile and launch the code:

             

            %> javac -g -verbose -cp '.:/usr/lib64/tableausdk/Java/jna.jar:/usr/lib64/tableausdk/Java/tableaucommon.jar:/usr/lib64/tableausdk/Java/tableauextract.jar:/usr/lib64/tableausdk/Java/tableauserver.jar' Test.java
            %> java Test

             

            This is the error I get:

             

            Error: A JNI error has occurred, please check your installation and try again

            Exception in thread "main" java.lang.NoClassDefFoundError: com/tableausoftware/TableauException

              at java.lang.Class.getDeclaredMethods0(Native Method)

              at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)

              at java.lang.Class.privateGetMethodRecursive(Class.java:3048)

              at java.lang.Class.getMethod0(Class.java:3018)

              at java.lang.Class.getMethod(Class.java:1784)

              at sun.launcher.LauncherHelper.validateMainClass(LauncherHelper.java:544)

              at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:526)

            Caused by: java.lang.ClassNotFoundException: com.tableausoftware.TableauException

              at java.net.URLClassLoader.findClass(URLClassLoader.java:382)

              at java.lang.ClassLoader.loadClass(ClassLoader.java:424)

              at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)

              at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

              ... 7 more

             

             

            Raffaello

            • 3. Re: Tableau SDK for Java (64 Bit) 10-3-8 does not support publish of hyper extracts
              raffaello.galli

              I fixed the issue by executing the following:

               

              export TAB_SDK_LOGDIR='/tmp/'

              export TAB_SDK_TMPDIR='/tmp/'

              export LD_LIBRARY_PATH='/usr/lib64/tableausdk/'

              javac -g -verbose  -target 8 -source 8 Test.java -cp '.:/usr/lib64/tableausdk/Java/jna.jar:/usr/lib64/tableausdk/Java/tableaucommon.jar:/usr/lib64/tableausdk/Java/tableauextract.jar:/usr/lib64/tableausdk/Java/tableauserver.jar' Test.java

              java -classpath '.:/usr/lib64/tableausdk/Java/jna.jar:/usr/lib64/tableausdk/Java/tableaucommon.jar:/usr/lib64/tableausdk/Java/tableauextract.jar:/usr/lib64/tableausdk/Java/tableauserver.jar' Test