如何在 spark2 中读取 Impala 的 Kudu

Posted

技术标签:

【中文标题】如何在 spark2 中读取 Impala 的 Kudu【英文标题】:how to read Kudu by Impala in spark2 【发布时间】:2018-01-10 09:56:41 【问题描述】:

我想在 spark2-shell 中阅读 Impala 的 Kudu,在很多方面都失败了 :(

输入 spark2-shell:

spark2-shell --jars commons-codec-1.3.jar,hive_metastore.jar,httpclient-4.1.3.jar,ImpalaJDBC41.jar,libthrift-0.9.0.jar,ql.jar,slf4j-log4j12-1.5.11.jar,zookeeper-3.4.6.jar,commons-logging-1.1.1.jar,hive_service.jar,httpcore-4.1.3.jar,libfb303-0.9.0.jar,log4j-1.2.14.jar,slf4j-api-1.5.11.jar,TCLIServiceClient.jar

我的代码:

spark.read.format("jdbc") .option("driver","com.cloudera.impala.jdbc41.Driver")
.option("url","jdbc:impala:Domainname")
//.option("databaseName","default") also use impala::default
.option("dbtable", "impala::default.tablename")
.load()

顺便说一句,我得到了desc formatted tablename 的“impala::default.tablename”。

输出:

java.lang.NullPointerException
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRDD$.resolveTable(JDBCRDD.scala:72)
  at org.apache.spark.sql.execution.datasources.jdbc.JDBCRelation.<init>(JDBCRelation.scala:113)
  at org.apache.spark.sql.execution.datasources.jdbc.JdbcRelationProvider.createRelation(JdbcRelationProvider.scala:45)
  at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:330)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:152)
  at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:125)
  ... 48 elided

【问题讨论】:

【参考方案1】:

最好用 Spark 直接连接到 Kudu,然后通过 Impala 连接 该文档在这里https://blog.cloudera.com/blog/2017/02/up-and-running-with-apache-spark-on-apache-kudu/

Impala 为 Spark SQL 提供具有竞争力的性能

【讨论】:

这个答案没有总结链接的内容,现在链接坏了

以上是关于如何在 spark2 中读取 Impala 的 Kudu的主要内容,如果未能解决你的问题,请参考以下文章

如何从 hive 或 impala 读取 Hbase 当前和以前版本的数据?

如何在 impala 或 hive 上读取复杂类型数组<string>?

spark2.x如何通过SparkSQL读取csv文件

spark2.x如何通过SparkSQL读取csv文件

Spark2.x(六十):在Structured Streaming流处理中是如何查找kafka的DataSourceProvider?

pyspark读取csv文件multiLine选项不适用于具有换行符spark2.3和spark2.2的记录