Flight SQL Configuration for Dremio On-Premise (Software) Instance

Hi,

I have a question related to the dremio.conf configuration file.

I see that in the template in docs there is:

flight: {
      enabled: true,
      port: 32010,
      # Authentication mode for the Arrow FlightServer endpoint.
      # There are two modes:
      #       - legacy.arrow.flight.auth
      #       - arrow.flight.auth2
      # legacy.arrow.flight.auth is backwards compatible and will be deprecated in the future.
      # arrow.flight.auth2 is the new and preferred Arrow Flight authentication method.
      auth.mode: "arrow.flight.auth2"
   }

in my configuration I didn’t set up those properties. Even though, I am able to connect using Flight SQL client. So I believe there is a default value for the above properties. May I know what are the defaults?

Furthermore what is the difference between these two modes:

  • legacy.arrow.flight.auth
  • arrow.flight.auth2
    ?

@pira

This was implemented to support the two authentication methods that will be available in Arrow Flight Server GA

This is a DremioConfig option rather than a support key because the option needs to be configured on Dremio startup and it cannot be changed while Dremio is running.

  • The new auth method will be on by default.
  • The new DremioConfig option added:
    • services.flight.auth.mode
    • This option has two configuration:
      • legacy.arrow.flight.auth
      • arrow.flight.auth2
    • For Arrow Flight Server GA, the default value for services.flight.auth.mode will be arrow.flight.auth2.

Hey

I have used ‘arrow.flight.auth2’ mode and I am getting an error like ‘Flight returned authenticated error, with message: User is not authenticated’ while I connect via windows arrow filght ODBC Sql driver.

Also going through server.log file of dremio I found the following error there.
‘User session is not available in session manager’.

I have disabled ‘use encryption’ tickbox on windows arrow flight odbc driver as well as i have set ‘flight.ssl.enabled’ to ‘false’ in dremio.conf file on linux.

I have set ‘flight.use_Session_service’ as ‘false’.

In case you have some idea, please throw some lights.

Hello Pratik,

I understand you are trying to connect to Dremio using ODBC from Windows. Could you send a screenshot of the error ?

The user that you are using to Authenticate is it a Dremio user or external Auth ?

Have you tried to check if isql -v <ODBC DSN SET IN /etc/ODBC.ini> works

Here is how you can set it up

[root@rajan-dremio-0 tmp]#

/etc/odbcinst.ini

[Arrow Flight SQL ODBC Driver]
Description=ODBC Driver for Arrow Flight SQL developed by Dremio
Driver=/opt/arrow-flight-sql-odbc-driver/lib64/libarrow-odbc.so.0.9.1.168
FileUsage=1
UsageCount=1

[root@rajan-dremio-0 tmp]# cat /etc/odbc.ini
[ODBC Data Sources]
Arrow Flight SQL ODBC DSN=Arrow Flight SQL ODBC Driver

[ArrowFlightSQLODBCDSN]
Description=ODBC Driver DSN for Arrow Flight SQL developed by Dremio
Driver=Arrow Flight SQL ODBC Driver
Host=172.25.0.106
Port=32010
UID=dremio
PWD=dremio123
useEncryption=false
TrustedCerts=/opt/arrow-flight-sql-odbc-driver/lib64/cacerts.pem
UseSystemTrustStore=true

[root@rajan-dremio-0 tmp]#

[root@rajan-dremio-0 tmp]# isql -v ArrowFlightSQLODBCDSN
±--------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
±--------------------------------------+
SQL>

Most importantly what is the version of Dremio that you are using.

Thanks,
Rajan.S

Thank you for your response.

Dremio Version : 23.0.0
Apache Arrow Flight SQL ODBC Drivers Version on Windows - 0.9.1.194
We are using a dremio user and not an external auth.

You have explained and suggested the setup which seems to be for Linux OS.
So you are suggesting just to try connecting to Dremio using ODBC drivers on linux ? I will set it up and revert here once done.

Now I am attaching here the screenshots of the errors which I am getting as well as the dremio.conf file.
I have tried 2 different configs. one is by keeping ‘flight.use_session_Service’ as ‘true’ and the other is by keeping the same config as ‘false’.
When I try keeping ‘flight.use_session_service’ as ‘false’, it gives me the error as ‘User is not authenticated’, where as when i keept it as ‘true’, I am getting an error related to gRPC which is also attached.




There is an issue we have with Arrow Flight on Windows on Version 23.

The issue is fixed as apart of defect

The fix is available in Dremio versions below

  • 23.1.2
  • 24.0.0

Please upgrade your dremio to one of the versions you should be able to connect excel to Dremio ODBC.

@Rajan_Santhanam
Thank you for the update, we will install the mentioned version and revert for any concerns.

Hi, I have made default installation of dremio oss, but I can’t connect to arrowflight port. I have already inspected dremio.conf, but arrowflight has only flight.use_session_service true and port 32010 is not exposed on the container. How can I enable arrowflight port after the dremio instance was created ?IS there a way ?

@Rafael

flight: {
      enabled: true,
      port: 32010,
      # Authentication mode for the Arrow FlightServer endpoint.
      # There are two modes:
      #       - legacy.arrow.flight.auth
      #       - arrow.flight.auth2
      # legacy.arrow.flight.auth is backwards compatible and will be deprecated in the future.
      # arrow.flight.auth2 is the new and preferred Arrow Flight authentication method.
      auth.mode: "arrow.flight.auth2"
   }
1 Like