在使用钻取脚本将一组parquet
文件转换为csv
时,遇到了其中某些字段包含逗号的问题。这会导致出现问题,因为钻探似乎不会自动在转换后的文件的字段周围添加任何转义的"<field>"
或'<field>'
字符(例如,对于看起来像“软饮料,大”的字符串值)
脚本看起来像
/opt/mapr/drill/drill-1.11.0/bin/sqlline \
-u jdbc:drill:zk=node001:5181,node002:5181,node003:5181 \
-n $(tail -n+1 $basedir/src/drill-creds.txt | head -1) \
-p $(tail -n+2 $basedir/src/drill-creds.txt | head -1) \
--run=$sqldir
正在由钻运行的sql看起来像
alter session set `store.format`='csv';
create table dfs.myworkspace.`/path/to/csv/destination` as
select ....
from dfs.myworkspace.`/path/to/origin/files`
有人有共同的解决方法吗?有没有一种方法可以将转义字符添加到转换后的csv文件中(尝试检查文档(https://drill.apache.org/docs/create-table-as-ctas/),但找不到任何相关内容)?
答案 0 :(得分:0)
您可以使用TSV或PSV格式,或者通过配置文件存储插件的格式插件来更新CSV单元格的分隔符:
在Drill UI中,选择 Storage ,然后 Update dfs存储插件,以格式找到 CSV 并添加<具有所需值的strong> 定界符 属性。
"csv": {
"type": "text",
"extensions": [
"csv2"
],
"skipFirstLine": false,
"extractHeader": true,
"delimiter": "^"
},
还请检查 转义 属性
查看更多: https://drill.apache.org/docs/text-files-csv-tsv-psv/#use-a-distributed-file-system