在spark中,控制输出文件大小的最佳方法是什么.例如,在log4j中,我们可以指定最大文件大小,然后文件旋转.
我正在寻找类似的镶木地板文件的解决方案.编写文件时是否有可用的最大文件大小选项?
我的解决方法很少,但没有一个是好的.如果我想将文件限制为64mb,那么一个选项是重新分区数据并写入临时位置.然后使用临时位置中的文件大小将文件合并在一起.但是获取正确的文件大小很困难.
我有一个映射缩减作业,它已经使用 hive 分区命名约定将记录写入 hdfs。
例如
/user/test/generated/code=1/channel=A
/user/test/generated/code=1/channel=B
Run Code Online (Sandbox Code Playgroud)
创建外部表后,它看不到分区。
create external table test_1 ( id string, name string ) partitioned by
(code string, channel string) STORED AS PARQUET LOCATION
'/user/test/generated'
Run Code Online (Sandbox Code Playgroud)
即使使用 alter 命令
更改表 test_1 添加分区(代码 = '1',通道 = 'A')
,它看不到分区或记录,因为
select * from test_1 limit 1 产生 0 结果。
如果我在创建外部表时使用空位置,然后使用加载数据路径...那么它就可以工作。但问题是分区太多,加载数据路径无法正常工作。
有没有办法让 hive 自动识别分区(不进行插入查询)?