试图通过spark sql查询csv格式的配置单元表时出现问题有人能解释一下原因吗?

hl0ma9xz  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(308)

尝试查询具有属性行格式serde'com.bizo.hive.serde.csv.csvserde'存储为inputformat'org.apache.hadoop.mapred.textinputformat'outputformat'org.apache.hadoop.ql.io.hiveignorekeytextoutputformat'的配置单元表时,出现“java.lang.classnotfoundexception:com.bizo.hive.serde.csv.csvserde”异常

s71maibg

s71maibg1#

解决方案是在提交spark命令时添加一个jar文件。
我也有同样的问题。我无法将spark连接到csv格式的配置单元表。但对于其他Hivetable,spark工作得很好。
在阅读了你的帖子和饶的评论后,我意识到这应该是一个缺少jar的问题。
步骤1:从这里下载一个jar文件(csv-serde-1.1.2-0.11.0-all.jar)
步骤2:然后用这个jar运行spark submit、spark shell或pyspark。我使用Pypark:

pyspark --deploy-mode client --master yarn --jars /your/jar/path/csv-serde-1.1.2-0.11.0-all.jar

第三步:测试你的spark+hive连接:

from pyspark.sql import HiveContext
sqlContext = HiveContext(sc)
hiveTableRdd = sqlContext.sql("SELECT * FROM hiveDatabase.hiveTable")
hiveTableRdd.show()

现在应该可以了。

***注意:我使用了'com.bizo.hive.serde.csv.csvserde',因为数据是双重量化的:

"ID1","A,John","25.6"
"ID2","B,Mike","29.1"
"ID3","C,Tony","27.3"
...

包含csv csvserde的配置单元表:

CREATE EXTERNAL TABLE hiveDatabase.hiveTable (
ID string,
Name string,
Value string
)
row format serde 'com.bizo.hive.serde.csv.CSVSerde'
with serdeproperties(
 'separatorChar' = '\,'
,'quoteChar' = '\"')
stored as textfile
LOCATION
  '/data/path/hiveTable';

相关问题