如何解决Simba ODBC 连接到增量表并使用 .Net C# 从增量格式表中读取数据
我正在尝试通过 simba odbc 驱动程序使用 c# 从增量格式表中读取数据。 增量格式表示例:https://docs.delta.io/latest/quick-start.html#-create-a-table&language-python
已按照说明下载并配置了 simba odbc https://www.simba.com/products/Spark/doc/ODBC_InstallGuide/mac/content/odbc/configuring/drivermanager.htm
这样配置后我就可以成功连接到spark thrift服务器了。但是,我无法从增量格式表中读取数据。
using(dbConnection)
{
dbConnection.Open();
Console.WriteLine("Connection Open!");
OdbcCommand dbCommand = dbConnection.CreateCommand();
dbCommand.CommandText = "SELECT * FROM accnt LIMIT 10";
OdbcDataReader dbReader = dbCommand.ExecuteReader();
if(dbReader.HasRows)
{
while(dbReader.Read())
{
Console.WriteLine("{0}\t{1}\t{2}",dbReader.GetString(0),dbReader.GetString(1),dbReader.GetString(2));
dbReader.GetString(1));
}
}
else
{
Console.WriteLine("No Rows Found.");
}
Console.WriteLine("Connection Close !");
}
错误信息是:
Unhandled exception. System.Data.Odbc.OdbcException (0x80131937): ERROR [HY000] [Simba][Hardy] (35) Error from server: error code: '0' error message: 'Error running query: java.lang.ClassNotFoundException: DELTA.DefaultSource'.
at System.Data.Odbc.OdbcConnection.HandleError(OdbcHandle hrHandle,RetCode retcode)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior,String method,Boolean needReader,Object[] methodArguments,SQL_API odbcApiMethod)
at System.Data.Odbc.OdbcCommand.ExecuteReaderObject(CommandBehavior behavior,Boolean needReader)
at System.Data.Odbc.OdbcCommand.ExecuteReader(CommandBehavior behavior)
at System.Data.Odbc.OdbcCommand.ExecuteReader()
at cdp_deltalake_poc.Program.Main(String[] args)
解决方法
您需要在启动 Thrift Server 时添加配置选项和 Delta Lake 包。这与向 Spark 提交应用程序的方式相同。例如:
sbin/start-thriftserver.sh \
--conf spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension \
--conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog \
--packages 'io.delta:delta-core_2.12:0.8.0'
您需要根据 Spark 版本调整 Delta Lake 包的版本(我确实使用了 0.8.0 和 Spark 3.0.1)。
之后我可以查询我创建的数据。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。