我正在尝试使用下面的代码将一个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执行器路径是否有问题? 如何解决这个问题?