2017-08-22 2 views
1

direkt zu laden Ich habe durch verwandte Beiträge in SO gegangen und konnte dieses spezielle Problem nirgendwo über das Internet finden.Unfähig, Hive-Parkett-Tabelle mit Spark-Datenframe

Ich versuche, Hive-Tabelle zu laden (Hive externe Tabelle zeigte auf Parkett-Dateien), aber Funken Datenrahmen konnte nicht die Daten lesen und es ist nur in der Lage, Schema zu lesen. Aber für die gleiche Bienenstock-Tabelle kann ich von der Bienenstockoberteil abfragen. Wenn ich versuche, die Hive-Tabelle in den Datenrahmen zu laden, gibt es keine Daten zurück. Unten sieht mein Skript wie und die DDL aus. Ich bin mit Spark-2.1 ​​(MapR Verteilung)

Daten können nicht von hive Tabelle lesen hat zugrunde liegende Parkett Dateien von Funken

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') 

Antwort

1

'spark.sql.sources.provider' = 'Parkett' entfernen und Sie werden Erfolg

+0

Ja, dass das Problem gelöst und funktioniert gut.Vielen Dank. –

+0

Könnten Sie bitte erläutern, wie Sie diese Eigenschaft entfernen können? – xwk