Apache spark 在pyspark中读取配置单元管理表的orc文件

Apache spark 在pyspark中读取配置单元管理表的orc文件,apache-spark,hadoop,hive,pyspark,Apache Spark,Hadoop,Hive,Pyspark,我正在尝试使用下面的pyspark代码读取托管配置单元表的orc文件 spark.read.format('orc').load('hive managed table path') 当我对获取的数据帧执行打印模式时,如下所示 root |-- operation: integer (nullable = true) |-- originalTransaction: long (nullable = true) |-- bucket: integer (nullable = true)

我正在尝试使用下面的pyspark代码读取托管配置单元表的orc文件

spark.read.format('orc').load('hive managed table path')
当我对获取的数据帧执行打印模式时,如下所示

root
 |-- operation: integer (nullable = true)
 |-- originalTransaction: long (nullable = true)
 |-- bucket: integer (nullable = true)
 |-- rowId: long (nullable = true)
 |-- currentTransaction: long (nullable = true)
 |-- row: struct (nullable = true)
 |    |-- col1: float (nullable = true)
 |    |-- col2: integer (nullable = true)
 |-- partition_by_column: date (nullable = true)
现在我无法解析这些数据,也无法对数据帧进行任何操作。在应用show()之类的操作时,我遇到一个错误

java.lang.IllegalArgumentException: Include vector the wrong length

有人面临同样的问题吗?如果是,请您建议如何解决。

由于我不确定版本,您可以尝试其他方式加载ORC文件

使用SqlContext

val df = sqlContext.read.format("orc").load(orcfile)

或SparkSql(推荐)

这是一个众所周知的问题

您之所以会出现此错误,是因为您试图读取
hiveacid
表,但Spark仍然不支持此操作


也许您可以将Hive表导出到普通的
ORC
文件中,然后使用Spark读取它们,或者尝试使用所述的
Hive JDBC
等替代方法

我已经尝试了上述两种方法,执行操作时出现问题中指定的错误。您使用的是哪个spark版本?spark版本2.3.2.3.1.0.0-78python版本2.7.5
select(df.row.col1)
?在这种情况下,我想您可以使用它来展平它。我尝试了df.select(“row.col1”).show(),得到了相同的错误
val df= spark.read.option("inferSchema", true).orc("filepath")
import spark.sql
sql("SELECT * FROM table_name").show()