PySpark:java.lang.ClassCastException

Posted

技术标签:

【中文标题】PySpark:java.lang.ClassCastException【英文标题】:PySpark: java.lang.ClassCastException 【发布时间】:2017-07-25 07:10:28 【问题描述】:

我有一个 PySpark 代码,它开发查询并在另一个 Hive 表上运行 insert into 命令,该表在内部映射到 HBase 表。 当我使用 spark sql 在 Hive 表上运行 insert into 命令时,出现以下异常..

java.lang.ClassCastException: org.apache.hadoop.hive.hbase.HiveHBaseTableOutputFormat cannot be cast to org.apache.hadoop.hive.ql.io.HiveOutputFormat

我检查了数据类型和 tblproperties,但无法通过此异常。

我使用的版本是:

PySpark -- 1.6.0
Hive -- 1.1.0-cdh5.8.2

表格属性为:

ROW FORMAT SERDE 'org.apache.hadoop.hive.hbase.HBaseSerDe'
stored by 'org.apache.hadoop.hive.hbase.HBaseStorageHandler'
with serdeproperties("hbase.columns.mapping"=":key,colf:a")
tblproperties("hbase.table.name"="abc",'hbase.mapred.output.outputtable' = 'abc');

即使遇到同样的问题,我也尝试删除 Row Format Serde..

我是否因为版本不匹配而遇到问题?还是我错了??

【问题讨论】:

等待这个:github.com/apache/spark/pull/18127 来解决它! 【参考方案1】:

这是spark的一个bug,看这个apache spark pull,https://github.com/apache/spark/pull/17989

【讨论】:

以上是关于PySpark:java.lang.ClassCastException的主要内容,如果未能解决你的问题,请参考以下文章

pyspark.sql.functions.col 和 pyspark.sql.functions.lit 之间的 PySpark 区别

Pyspark 安装错误:没有名为“pyspark”的模块

Pyspark:将 sql 查询转换为 pyspark?

Pyspark - ImportError:无法从“pyspark”导入名称“SparkContext”

Pyspark:基于所有列减去/差异 pyspark 数据帧

在 PySpark 的两个不同 pyspark.sql.dataframes 中的两列中创建一个 pyspark.sql.dataframe