无法使用火花数据框直接加载蜂巢木地板

时间:2017-08-22 19:14:38

标签: apache-spark apache-spark-sql spark-dataframe hiveql

我已经通过SO提供相关帖子,但无法在互联网上找到这个特定问题。

我正在尝试加载Hive表(Hive外部表指向镶木地板文件)但火花数据框无法读取数据,它只能读取模式。但是对于相同的hive表,我可以从hive shell查询。当我尝试将hive表加载到数据帧时,它不会返回任何数据。下面是我的脚本和DDL。我正在使用Spark 2.1(Mapr发布)

无法从hive表中读取数据,其中包含来自spark的基础镶木地板文件

val df4 = spark.sql("select * from default.Tablename")
scala> df4.show()
+----------------------+------------------------+----------+---+-------------+-------------+---------+
|col1           |col2           |col3                       |key            |col4|  record_status|source_cd|
+----------------------+------------------------+----------+---+-------------+-------------+---------+
+----------------------+------------------------+----------+---+-------------+-------------+---------+

Hive DDL
CREATE EXTERNAL TABLE `Tablename`(
  `col1` string,
  `col2` string,
  `col3` decimal(19,0),
  `key` string,
  `col6` string,
  `record_status` string,
  `source_cd` string)
ROW FORMAT SERDE
  'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
WITH SERDEPROPERTIES (
  'path'='maprfs:abc/bds/dbname.db/Tablename')
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
  'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
  'maprfs:/Datalocation/Tablename'
TBLPROPERTIES (
  'numFiles'='2',
  'spark.sql.sources.provider'='parquet',
  'spark.sql.sources.schema.numParts'='1',
  'spark.sql.sources.schema.part.0'='{\"type\":\"struct\",\"fields\":[{\"name\":\"col1\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"col2\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"col3\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"key\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"col6\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"record_status\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}},{\"name\":\"source_cd\",\"type\":\"string\",\"nullable\":true,\"metadata\":{}}]}',
  'totalSize'='68216',
  'transient_lastDdlTime'='1502904476')

1 个答案:

答案 0 :(得分:1)

删除 ' spark.sql.sources.provider' ='拼花' 你会成功