Hive 作为select插入配置单元外部表,并确保它在表目录中生成单个文件
我的问题与下面的帖子有些相似。我想使用Hive 作为select插入配置单元外部表,并确保它在表目录中生成单个文件,hive,Hive,我的问题与下面的帖子有些相似。我想使用selectquery从配置单元表下载一些数据。但由于数据很大,我想将其作为一个外部表写入给定路径。这样我就可以创建一个csv文件。使用下面的代码 create external table output(col1 STRING, col2STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE LOCATION '{outdir}/output'
select
query从配置单元表下载一些数据。但由于数据很大,我想将其作为一个外部表写入给定路径。这样我就可以创建一个csv文件。使用下面的代码
create external table output(col1 STRING, col2STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '{outdir}/output'
INSERT OVERWRITE TABLE output
Select col1, col2 from atable limit 1000
这可以很好地工作,并创建一个0000
格式的文件,该文件可以复制为csv文件
但我的问题是如何确保输出总是有一个文件?如果没有定义分区,它总是单个文件吗?它用来分割文件的规则是什么
看到了一些类似的问题如下。但它讨论了hdfs文件访问。
我知道下面的备选方案,但我使用配置单元连接对象从远程节点执行查询
hive-e'selectsql;'|sed的/[\t]/,/g'>outpathwithfilename
在执行覆盖之前,可以设置以下属性
设置mapreduce.job.reduces=1代码>
注意:如果配置单元引擎不允许在运行时修改,则通过在hive-site.xml中设置以下属性将参数列入白名单
hive.security.authorization.sqlstd.confwhitelist.append=| mapreduce.job.| mapreduce.map.| mapreduce.reduce.*
您可以在执行覆盖之前设置以下属性
设置mapreduce.job.reduces=1代码>
注意:如果配置单元引擎不允许在运行时修改,则通过在hive-site.xml中设置以下属性将参数列入白名单
hive.security.authorization.sqlstd.confwhitelist.append=| mapreduce.job.| mapreduce.map.| mapreduce.reduce.*