0

我正在尝试使用 PySpark 2.1.0 读取存储为 Kudu 的数据

>>> from os.path import expanduser, join, abspath
>>> from pyspark.sql import SparkSession
>>> from pyspark.sql import Row
>>> spark = SparkSession.builder \
        .master("local") \
        .appName("HivePyspark") \
        .config("hive.metastore.warehouse.dir", "hdfs:///user/hive/warehouse") \
        .enableHiveSupport() \
        .getOrCreate()
>>> spark.sql("select count(*) from mySchema.myTable").show()

我在集群上安装了 Kudu 1.2.0。这些是 hive/Impala 表。

当我执行最后一行时,出现以下错误:

.
.
.
: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.com.cloudera.kudu.hive.KuduStorageHandler
.
.
.
aused by: org.apache.hadoop.hive.ql.metadata.HiveException: Error in loading storage handler.com.cloudera.kudu.hive.KuduStorageHandler
    at org.apache.hadoop.hive.ql.metadata.HiveUtils.getStorageHandler(HiveUtils.java:315)
    at org.apache.hadoop.hive.ql.metadata.Table.getStorageHandler(Table.java:284)
    ... 61 more
Caused by: java.lang.ClassNotFoundException: com.cloudera.kudu.hive.KuduStorageHandler

我指的是以下资源:

我很想知道如何将 Kudu 相关的依赖项包含到我的 pyspark 程序中,以便我可以克服这个错误。

4

2 回答 2

0

阿帕奇星火2.3 

以下是供您参考的代码:


使用以下代码从 pyspark 读取 kudu 表:

kuduDF = spark.read.format('org.apache.kudu.spark.kudu').option('kudu.master',"IP of master").option('kudu.table',"impala::TABLE name").load()

kuduDF.show(5)

使用以下代码写入 kudu 表:

DF.write.format('org.apache.kudu.spark.kudu').option('kudu.master',"IP of master").option('kudu.table',"impala::TABLE name").mode("append").save()

参考链接:  https ://medium.com/@sciencecommitter/how-to-read-from-and-write-to-kudu-tables-in-pyspark-via-impala-c4334b98cf05

如果您想使用下面的 Scala 是参考链接:

https://kudu.apache.org/docs/developing.html

于 2020-02-24T07:43:32.253 回答
0

我解决此问题的方法是将 kudu-spark 的相应 Jar 传递给 pyspark2 shell 或 spark2-submit 命令

于 2017-08-28T16:04:09.363 回答