在镶木地板文件上创建Hive表失败 - 我哪里错了?

时间:2017-11-07 17:21:09

标签: apache-spark hive apache-spark-sql parquet

我正在将数据框保存到镶木地板文件中。生成的模式如下所示:

org.apache.spark.sql.parquet.row.metadata{  
"type":"struct",
"fields":[  
  {  
     "name":"DCN",
     "type":"string",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"EDW_id",
     "type":"string",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"recievedTimestamp",
     "type":"string",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"recievedDate",
     "type":"date",
     "nullable":true,
     "metadata":{}
  },
  {  
     "name":"rule",
     "type":"string",
     "nullable":true,
     "metadata":{}
  }
]}

数据框是在spark程序中生成的;当我通过spark-submit运行它并显示数据帧时,我可以看到有几百条记录。我正在将df保存到镶木地板,如下:

df.write.format("parquet").mode(SaveMode.Overwrite).save('/home/my/location')

在hive中创建一个外部表,如下所示:

CREATE EXTERNAL TABLE schemaname.tablename (
  DCN STRING,
  EDW_ID STRING,
  RECIEVEDTIMESTAMP STRING,
  RECIEVEDDATE STRING,
  RULE STRING) 
STORED AS PARQUET
LOCATION '/home/my/location';

表正在成功创建,但它没有填充任何数据 - 当我查询它时,返回0条记录。谁能发现我做错了什么?这是使用Hive 1.1和Spark 1.6。

2 个答案:

答案 0 :(得分:0)

Hive需要jar文件来处理镶木地板文件。

1.首先下载parquet-hive-bundle-1.5.0.jar

2.将jar路径包含在hive-site.xml中。

<property>
   <name>hive.jar.directory</name>
   <value>/home/hduser/hive/lib/parquet-hive-bundle-1.5.0.jar</value>
</property>

答案 1 :(得分:0)

hive元数据存储区不区分大小写,并且将所有列名以小写形式存储,其中,实木复合地板按原样存储。尝试在相同情况下重新创建配置单元表。