csv - 尝试通过spark-sql查询csv格式配置单元表时出现问题。有人可以解释原因吗?

标签 csv hadoop apache-spark apache-spark-sql spark-streaming

尝试查询具有属性的配置单元表时,出现“java.lang.ClassNotFoundException:com.bizo.hive.serde.csv.CSVSerde”异常
行格式序列
'com.bizo.hive.serde.csv.CSVSerde'
存储为INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
输出格式
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'

最佳答案

解决方案是在提交Spark命令时添加jar文件。

我有同样的问题。我无法将Spark连接到CSV格式的Hive表。但是对于其他Hive表,Spark可以完美地工作。

阅读完您的帖子和Rao的评论后,我意识到这应该是缺少的jar问题。

步骤1:
here下载一个jar文件(csv-serde-1.1.2-0.11.0-all.jar)

第2步:
然后使用此jar运行spark-submit或spark-shell或pyspark。
我用pyspark:

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的Hive表:
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';

关于csv - 尝试通过spark-sql查询csv格式配置单元表时出现问题。有人可以解释原因吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35293204/

相关文章:

python - 使用自定义分隔符将字典列表写入 CSV

Haskell 计算满足查询的列表的元素

hadoop - 获取配置单元脚本的 _SUCCESS 文件

python - 使用 Hadoop Streaming 管理依赖关系?

java - 数据结构最佳设计(大数据)

apache-spark - 错误 : java. lang.IllegalArgumentException:选项 'basePath' 必须是目录

python - 从 csv 文件中删除一行

Python CSV模块,将列添加到侧面,而不是底部

java - Apache Spark 可以使用 TCP 监听器作为输入吗?

scala - 如何在不同大小的数组列中随机选择元素?