读取表格式时Spark SQL失败OpenCSVSerde ClassNotFoundException未找到类org.apache.hadoop.hive.serde2.OpenCSVSerde

时间:2016-09-20 02:56:03

标签: hadoop apache-spark hive pyspark

我正在尝试使用下面的代码将一个hive表格式SERDE'org.apache.hadoop.hive.serde2.OpenCSVSerde'加载到PySpark。

  

来自pyspark.sql导入HiveContext

     

ent = sqlContext.sql(“select * from temp.employee”)

错误:

MetaException(message:java.lang.ClassNotFoundException Class org.apache.hadoop.hive.serde2.OpenCSVSerde not found)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializerFromMetaStore(Table.java:290)
at org.apache.hadoop.hive.ql.metadata.Table.getDeserializer(Table.java:281)

我尝试将Hive serde jar添加到Spark classpath,如下所示

  

spark.driver.extraClassPath =的/ usr / HDP / 2.3.2.0-2950 / hadoop的/ LIB /活泼-java的1.0.4.1.jar:/usr/hdp/2.3.2.0-2950/hadoop/lib/hive -serde-1.2.1.2.3.2.0-2950.jar

     

spark.executor.extraClassPath =的/ usr / HDP / 2.3.2.0-2950 / hadoop的/ LIB /活泼-java的1.0.4.1.jar:/usr/hdp/2.3.2.0-2950/hadoop/lib/hive -serde-1.2.1.2.3.2.0-2950.jar

添加上面的jar后,这个表的表读数没问题,但是对于其他普通表没有错误。

Py4JJavaError: An error occurred while calling o38.sql.
: java.lang.NoClassDefFoundError: org/apache/hadoop/hive/common/type/HiveIntervalYearMonth
at org.apache.hadoop.hive.serde2.objectinspector.primitive.PrimitiveObjectInspectorUtils.<clinit>(PrimitiveObjectInspectorUtils.java:228)
at org.apache.hadoop.hive.serde2.typeinfo.TypeInfoUtils$TypeInfoParser.expect(TypeInfoUtils.java:341)

将jar添加到spark执行器路径是否有问题? 如何解决这个问题?

0 个答案:

没有答案