Knime Business Hub: BigQuery Connection, uploading(?) jdbc drivers onto hub

Hi,

we recently got our business hub (I am admin) on AWS and everything is running fine so far, but I still have one big problem:
BigQuery Connection (and therefore queries/getting data) via Google BigQuery Connector.

Locally: Install/unzip Simba drivers, create database connection, no problem.
knime-server (years ago): export/copy database related rows from local epf file onto knime-server epf file and change local driver paths with hardcoded VM paths for the VM where the server was running (not a nice way, but it worked for years).

knime-business hub: I do not see any clear documentation nor any other forum post about this.
As far as I see now: create a customization profile with the bigquery driver/database related rows from a local epf and add (the whole package of jars) into the zipfile to upload via the workflow provided ?(Customization Profile Application – KNIME Community Hub )
But how do I handle the local absolute path to the jar files? What do I replace them with?

Any idea on this? Or is my approach simply wrong?
Does anyone have a solution?

Best regards and thank you for your help!

I sort of wish you’d included a screenshot of where. I’m not familiar with the workflow yet.

I think I understand your question. I’ll use these abbreviations: (KAP = KNIME Analytics Platform; KBH = KNIME Business Hub; KS = KNIME Server)

Here are the things I wished were clearer from the documentation (I’m also writing this out for “future me”) :

What do I want to keep from the export of the preferences and what do I want to throw away?

  1. It is a little easier to understand the answer to that if you happen to know how to access the Configuration in KAP: On Mac, click on KNIME in the upper left, and then select About KAP. On Windows, go to the Help menu in the upper right, and then select About KAP. From there you can click on Installation details on the lower left and finally the rightmost tab to get to the Configuration screen. knime_oDPqeDRGUz
    and finally the rightmost tab to get to the Configuration screen: You want BigQuery, so you can type that into the search bar to show only the info you care about. Those (User) Preferences are what you’re going to keep.
  2. Another way to figure that out is to start as I did in the KBH Admin documentation section on Customization Profiles. But then leave that all behind and jump into the KNIME Extensions documentation section on Customization Profiles.

    There you can find the steps you need to edit the info from the preferences (either pasted from the Configuration section we just looked at or edited down from the export).
  3. You’ll notice there, that it provides (what I think is) the answer to your question: Instead of the path that you have on KAP or KS, you are using the .zip file as the point of reference. It shows up as ${profile:location} with the subdirectories referenced from there.

At the moment I cannot verify this works because the app doesn’t like my self-signed certificates. But one can use Postman and the API endpoint for the Execution Context to upload the .zip file as a new (or modified) Customization Profile.

1 Like

Hi,

thank you for the quick answer.
You got exactly what I mean.
I looked at the knime business hub admin guide, the bigquery guide - but not in the db_extension guide…my first mistake.

Looking at: KNIME Database Extension Guide
/instance/org.knime.database/drivers/<DRIVER_ID>/database_type=
/instance/org.knime.database/drivers/<DRIVER_ID>/driver_class=<DRIVER_CLASS_NAME>
/instance/org.knime.database/drivers/<DRIVER_ID>/paths/0=${profile:location}/<DRIVER_JAR>
/instance/org.knime.database/drivers/<DRIVER_ID>/url_template=<URL_TEMPLATE>
/instance/org.knime.database/drivers/<DRIVER_ID>/version=<DRIVER_VERSION>

It is only written to use a specific JAR file.
Screenshots from the KAP are always nice, but instead of just one JAR file, it is possible to use a whole folder within KAP. Is the same possible on KBH? If yes, that would be great to read in the documentation as well; or in case of bigquery, since it already has it’s own documentation anyway, please put a working example in there where any KBH admin simply needs to adjust their own path’s.

The problem with the simba drivers is: It is not just one .JAR file that we need to make it work, it is many of them, so essentially the whole folder. (please correct me, if just one JAR file is enough (which one?), I cannot see it on your screenshot, because it is cut off on the right side)

Let’s go into detail:

I create a zip file, for example named “hub_pref_incl_bq.zip” and the contents are:
image
One folder containing all the simba driver files and one epf with these lines:

Then I upload this as a custom profile to the KBH with the workflow linked above?
Will that work?

Since I cannot really test it, except live-testing… How does look it like/work on your own hubs?

I have not had time to test, and might not within the next day or so.

My understanding is that the only difference between KAP, KS, KBH is that there is no absolute path for the assets, so instead you use ${profile: location} and the subdirectory/filename. I don’t know that it worked for you with just the directory on the other products, but if it did, I would think it would work the same with KBH. The configuration of my KAP has the directory in that line.

That said, the documentation


indicates that you need the name of the .jar you’re actually using.

Though you don’t have a dev environment in which to test, you can create a test executor and try it there. You won’t need to restart your main executor until you’ve tested that the respective nodes work in test workflows.
At the moment, none of the custom drivers are working on your KBH, so even if you upload a Customization Profile, apply it, and find it doesn’t work, then you haven’t lost much. You’ll just update the .epf file to point to the .jar for each resource and apply that instead. Then when you are confident on what will work you can do the same on your production executor.

Solved! :slight_smile:

Reading every letter carefully in the documentation, helps…
It’s written …drivers… attention on the s.

The example only shows one driver, but the simba package does not need just one jar file, but many - so use all (currently 65) of them.

My custom profile looks like this:

/instance/org.knime.database/drivers/google_big_query/database_type=bigquery
/instance/org.knime.database/drivers/google_big_query/description=
/instance/org.knime.database/drivers/google_big_query/driver_class=com.simba.googlebigquery.jdbc.Driver
/instance/org.knime.database/drivers/google_big_query/paths/0=${profile:location}/google_jdbc_driver_2025_07/threetenbp-1.7.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/1=${profile:location}/google_jdbc_driver_2025_07/slf4j-api-1.7.36.jar
/instance/org.knime.database/drivers/google_big_query/paths/10=${profile:location}/google_jdbc_driver_2025_07/perfmark-api-0.27.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/11=${profile:location}/google_jdbc_driver_2025_07/opencensus-contrib-http-util-0.31.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/12=${profile:location}/google_jdbc_driver_2025_07/opencensus-api-0.31.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/13=${profile:location}/google_jdbc_driver_2025_07/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar
/instance/org.knime.database/drivers/google_big_query/paths/14=${profile:location}/google_jdbc_driver_2025_07/jsr305-3.0.2.jar
/instance/org.knime.database/drivers/google_big_query/paths/15=${profile:location}/google_jdbc_driver_2025_07/json-20240303.jar
/instance/org.knime.database/drivers/google_big_query/paths/16=${profile:location}/google_jdbc_driver_2025_07/joda-time-2.13.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/17=${profile:location}/google_jdbc_driver_2025_07/javax.annotation-api-1.3.2.jar
/instance/org.knime.database/drivers/google_big_query/paths/18=${profile:location}/google_jdbc_driver_2025_07/jackson-databind-2.14.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/19=${profile:location}/google_jdbc_driver_2025_07/jackson-core-2.17.2.jar
/instance/org.knime.database/drivers/google_big_query/paths/2=${profile:location}/google_jdbc_driver_2025_07/proto-google-iam-v1-1.41.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/20=${profile:location}/google_jdbc_driver_2025_07/jackson-annotations-2.14.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/21=${profile:location}/google_jdbc_driver_2025_07/j2objc-annotations-3.0.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/22=${profile:location}/google_jdbc_driver_2025_07/httpcore-4.4.16.jar
/instance/org.knime.database/drivers/google_big_query/paths/23=${profile:location}/google_jdbc_driver_2025_07/httpclient-4.5.14.jar
/instance/org.knime.database/drivers/google_big_query/paths/24=${profile:location}/google_jdbc_driver_2025_07/guava-33.3.1-jre.jar
/instance/org.knime.database/drivers/google_big_query/paths/25=${profile:location}/google_jdbc_driver_2025_07/gson-2.11.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/26=${profile:location}/google_jdbc_driver_2025_07/grpc-util-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/27=${profile:location}/google_jdbc_driver_2025_07/grpc-stub-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/28=${profile:location}/google_jdbc_driver_2025_07/grpc-protobuf-lite-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/29=${profile:location}/google_jdbc_driver_2025_07/grpc-protobuf-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/3=${profile:location}/google_jdbc_driver_2025_07/proto-google-common-protos-2.46.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/30=${profile:location}/google_jdbc_driver_2025_07/grpc-netty-shaded-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/31=${profile:location}/google_jdbc_driver_2025_07/grpc-inprocess-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/32=${profile:location}/google_jdbc_driver_2025_07/grpc-grpclb-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/33=${profile:location}/google_jdbc_driver_2025_07/grpc-google-cloud-bigquerystorage-v1beta2-0.181.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/34=${profile:location}/google_jdbc_driver_2025_07/grpc-google-cloud-bigquerystorage-v1beta1-0.181.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/35=${profile:location}/google_jdbc_driver_2025_07/grpc-google-cloud-bigquerystorage-v1-3.9.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/36=${profile:location}/google_jdbc_driver_2025_07/grpc-googleapis-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/37=${profile:location}/google_jdbc_driver_2025_07/grpc-context-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/38=${profile:location}/google_jdbc_driver_2025_07/grpc-core-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/39=${profile:location}/google_jdbc_driver_2025_07/grpc-auth-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/4=${profile:location}/google_jdbc_driver_2025_07/proto-google-cloud-bigquerystorage-v1beta2-0.181.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/40=${profile:location}/google_jdbc_driver_2025_07/grpc-api-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/41=${profile:location}/google_jdbc_driver_2025_07/grpc-alts-1.67.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/42=${profile:location}/google_jdbc_driver_2025_07/google-oauth-client-1.36.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/43=${profile:location}/google_jdbc_driver_2025_07/google-http-client-gson-1.45.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/44=${profile:location}/google_jdbc_driver_2025_07/google-http-client-apache-v2-1.45.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/45=${profile:location}/google_jdbc_driver_2025_07/google-http-client-1.45.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/46=${profile:location}/google_jdbc_driver_2025_07/google-cloud-core-2.45.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/47=${profile:location}/google_jdbc_driver_2025_07/google-cloud-bigquerystorage-3.9.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/48=${profile:location}/google_jdbc_driver_2025_07/GoogleBigQueryJDBC42.jar
/instance/org.knime.database/drivers/google_big_query/paths/49=${profile:location}/google_jdbc_driver_2025_07/google-auth-library-oauth2-http-1.28.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/5=${profile:location}/google_jdbc_driver_2025_07/proto-google-cloud-bigquerystorage-v1beta1-0.181.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/50=${profile:location}/google_jdbc_driver_2025_07/google-auth-library-credentials-1.28.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/51=${profile:location}/google_jdbc_driver_2025_07/google-api-services-bigquery-v2-rev20240919-2.0.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/52=${profile:location}/google_jdbc_driver_2025_07/google-api-client-2.7.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/53=${profile:location}/google_jdbc_driver_2025_07/gax-grpc-2.55.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/54=${profile:location}/google_jdbc_driver_2025_07/gax-2.55.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/55=${profile:location}/google_jdbc_driver_2025_07/failureaccess-1.0.2.jar
/instance/org.knime.database/drivers/google_big_query/paths/56=${profile:location}/google_jdbc_driver_2025_07/error_prone_annotations-2.33.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/57=${profile:location}/google_jdbc_driver_2025_07/conscrypt-openjdk-uber-2.5.2.jar
/instance/org.knime.database/drivers/google_big_query/paths/58=${profile:location}/google_jdbc_driver_2025_07/commons-compress-1.27.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/59=${profile:location}/google_jdbc_driver_2025_07/commons-codec-1.17.1.jar
/instance/org.knime.database/drivers/google_big_query/paths/6=${profile:location}/google_jdbc_driver_2025_07/proto-google-cloud-bigquerystorage-v1alpha-3.9.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/60=${profile:location}/google_jdbc_driver_2025_07/avro-1.11.4.jar
/instance/org.knime.database/drivers/google_big_query/paths/61=${profile:location}/google_jdbc_driver_2025_07/auto-value-annotations-1.11.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/62=${profile:location}/google_jdbc_driver_2025_07/auto-value-1.11.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/63=${profile:location}/google_jdbc_driver_2025_07/api-common-2.38.0.jar
/instance/org.knime.database/drivers/google_big_query/paths/64=${profile:location}/google_jdbc_driver_2025_07/annotations-4.1.1.4.jar
/instance/org.knime.database/drivers/google_big_query/paths/65=${profile:location}/google_jdbc_driver_2025_07/animal-sniffer-annotations-1.24.jar
/instance/org.knime.database/drivers/google_big_query/paths/7=${profile:location}/google_jdbc_driver_2025_07/proto-google-cloud-bigquerystorage-v1-3.9.3.jar
/instance/org.knime.database/drivers/google_big_query/paths/8=${profile:location}/google_jdbc_driver_2025_07/protobuf-java-util-3.25.5.jar
/instance/org.knime.database/drivers/google_big_query/paths/9=${profile:location}/google_jdbc_driver_2025_07/protobuf-java-3.25.5.jar
/instance/org.knime.database/drivers/google_big_query/url_template=jdbc:bigquery://bigquery.googleapis.com:443;ProjectId=<PROJECT_NAME>
/instance/org.knime.database/drivers/google_big_query/version=1.6.0

Putting that epf and the folder into a zip file does it:
image

With only one execution context, I could not really test it, but with the server workflow it is not a problem to apply/detach/delete any custom profiles.

One more thing to mention:
On windows the filepaths usually contain “\\”, that needs to be changed to “/” for any Linux based systems for the KBH.

Thank you for your support, @llepome .
I hope this helps anyone who faces the same problem.

Now onto the next connection challanges :slight_smile:

1 Like

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.