一个专注于大数据技术架构与应用分享的技术博客

在parquet文件上创建hive表

在parquet文件上创建hive表失败,ERROR: Failed with exception java.io.IOException:org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.ClassCastException: org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.IntWritable。

需要将parquet文件的schema打印出来,在创建hive表时的数据类型要与之一一对应。

val sqlc = SparkSession.builder().appName("test").getOrCreate()		
val S3Path = "s3://bucket_name/*/*/*/"
val parquetDF = sqlc.read.parquet(s3Path)
println(parquetDF.schema)

StructType(StructField(ColumnA,StringType,true), StructField(ColumnB,LongType,true), StructField(ColumnC,DateType,true), StructField(ColumnD,DoubleType,true))

CREATE EXTERNAL TABLE IF NOT EXISTS table_name(
  ColumnA string, 
  ColumnB bigint, 
  ColumnC date, 
  ColumnD double
)
partitioned by (ColumnA string)
ROW FORMAT DELIMITED 
  FIELDS TERMINATED BY '\t' 
STORED AS PARQUET
LOCATION
  's3://bucket_name/*/*/*/';
  
msck repair table table_name;
赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《在parquet文件上创建hive表》
文章链接:https://macsishu.com/%e5%9c%a8parquet%e6%96%87%e4%bb%b6%e4%b8%8a%e5%88%9b%e5%bb%bahive%e8%a1%a8
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。