Apache spark 来自spark分区拼花文件的黑斑羚表
我已经使用Spark生成了一些分区拼花地板数据,我想知道如何将其映射到黑斑羚表。。。遗憾的是,我还没有找到任何解决办法 拼花地板的模式如下所示:Apache spark 来自spark分区拼花文件的黑斑羚表,apache-spark,parquet,impala,partition,Apache Spark,Parquet,Impala,Partition,我已经使用Spark生成了一些分区拼花地板数据,我想知道如何将其映射到黑斑羚表。。。遗憾的是,我还没有找到任何解决办法 拼花地板的模式如下所示: { key: long, value: string, date: long } 我用键和日期对它进行了分区,这在我的hdfs上提供了这样的目录: /data/key=1/date=20170101/files.parquet /data/key=1/date=20170102/files.parquet /data/key=2/date=20170
{ key: long,
value: string,
date: long }
我用键
和日期
对它进行了分区,这在我的hdfs上提供了这样的目录:
/data/key=1/date=20170101/files.parquet
/data/key=1/date=20170102/files.parquet
/data/key=2/date=20170101/files.parquet
/data/key=2/date=20170102/files.parquet
...
您知道我如何告诉Impala从这个数据集创建一个具有相应分区的表(并且不必像我读到的那样在每个分区上循环)?可能吗
提前谢谢假设拼花的模式是指数据集的模式,然后使用列进行分区,在实际的
文件中只有键列。拼花
文件。现在,您可以按如下步骤进行操作
解决方案是使用黑斑羚外部表
create external table mytable (key BIGINT) partitioned by (value String ,
date BIGINT) stored as parquet location '....../data/'
注意,在上面的语句中,必须给出数据文件夹的路径
alter table mytable recover partitions'
refresh mytable;
以上2个命令将根据表的模式自动检测分区,并了解子目录中存在的拼花文件
现在,您可以开始查询数据了
希望对您有所帮助,假设您使用的是拼花的模式,您指的是数据集的模式,然后使用列进行分区,您将在实际的
文件.parquet
文件中只有键列。现在,您可以按如下步骤进行操作
解决方案是使用黑斑羚外部表
create external table mytable (key BIGINT) partitioned by (value String ,
date BIGINT) stored as parquet location '....../data/'
注意,在上面的语句中,必须给出数据文件夹的路径
alter table mytable recover partitions'
refresh mytable;
以上2个命令将根据表的模式自动检测分区,并了解子目录中存在的拼花文件
现在,您可以开始查询数据了
希望它有帮助您是否尝试更改透视图,即使用Impala创建一个外部表,然后使用Spark
hiveContext
插入该表,然后只需在Impala中运行刷新以确认新的数据文件?顺便问一句,您确定分区有意义吗?您的拼花地板文件有多大?而date
列只会带来麻烦,因为它是SQL中的保留字。。。!您是否尝试更改透视图,即使用Impala创建一个外部表,然后使用SparkhiveContext
插入该表,然后在Impala中运行刷新以确认新的数据文件?顺便问一下,您是否确定分区有意义-您的拼花文件有多大?而date
列只会带来麻烦,因为它是SQL中的保留字。。。!