使用 Apache Drill 查询无扩展文件
Query Extensionless File using Apache Drill
我使用 Sqoop 1.4.6 在 Hadoop 中导入数据。 Sqoop 将数据导入并保存在 HDFS 中的无扩展名文件中,但格式为 csv。我使用 Apache Drill 从该文件中查询数据,但出现 Table not found 错误。在 Storage Plugin 配置中,我什至将 null, blank (""), space (" ") 放在扩展名中,但无法查询文件。当我用扩展名更改文件名时,即使我能够查询文件。将任何扩展名放在配置文件中都可以,但空扩展名除外。我可以查询以 csv 格式保存但扩展名为 'mat' 或任何其他格式的文件。
有没有办法查询无扩展名的文件?
您可以在存储插件配置中使用默认的输入格式来解决这个问题。例如:
select * from dfs.`/Users/khahn/Downloads/csv_line_delimit.csv`;
+-------------------------+
| columns |
+-------------------------+
| ["hello","1","2","3!"] |
. . .
更改文件名以删除扩展名并修改插件配置 "location" 和 "defaultInputFormat":
{
"type": "file",
"enabled": true,
"connection": "file:///",
"workspaces": {
"root": {
"location": "/Users/khahn/Downloads",
"writable": false,
"defaultInputFormat": "csv"
},
查询没有扩展名的文件
0: jdbc:drill:zk=local> select * from dfs.root.`csv_line_delimit`;
+-------------------------+
| columns |
+-------------------------+
| ["hello","1","2","3!"] |
. . .
我也有同样的经历。首先,我将 1 table 从 oracle 导入到 hadoop 2.7.1,然后通过 drill 进行查询。这是我通过网络设置的插件配置 UI:
{
"type": "file",
"enabled": true,
"connection": "hdfs://192.168.19.128:8020",
"workspaces": {
"hdf": {
"location": "/user/hdf/my_data/",
"writable": false,
"defaultInputFormat": "csv"
},
"tmp": {
"location": "/tmp",
"writable": true,
"defaultInputFormat": null
}
},
"formats": {
"csv": {
"type": "text",
"extensions": [
"csv"
],
"delimiter": ","
}
}
}
然后,在 drill cli 中,这样查询:
USE hdfs.hdf
SELECT * FROM part-m-00000
此外,在hadoop文件系统中,当我cat 'part-m-00000'的内容时,控制台打印出以下格式:
2015-11-07 17:45:40.0,6,8
2014-10-02 12:25:20.0,10,1
我使用 Sqoop 1.4.6 在 Hadoop 中导入数据。 Sqoop 将数据导入并保存在 HDFS 中的无扩展名文件中,但格式为 csv。我使用 Apache Drill 从该文件中查询数据,但出现 Table not found 错误。在 Storage Plugin 配置中,我什至将 null, blank (""), space (" ") 放在扩展名中,但无法查询文件。当我用扩展名更改文件名时,即使我能够查询文件。将任何扩展名放在配置文件中都可以,但空扩展名除外。我可以查询以 csv 格式保存但扩展名为 'mat' 或任何其他格式的文件。
有没有办法查询无扩展名的文件?
您可以在存储插件配置中使用默认的输入格式来解决这个问题。例如:
select * from dfs.`/Users/khahn/Downloads/csv_line_delimit.csv`;
+-------------------------+
| columns |
+-------------------------+
| ["hello","1","2","3!"] |
. . .
更改文件名以删除扩展名并修改插件配置 "location" 和 "defaultInputFormat":
{
"type": "file",
"enabled": true,
"connection": "file:///",
"workspaces": {
"root": {
"location": "/Users/khahn/Downloads",
"writable": false,
"defaultInputFormat": "csv"
},
查询没有扩展名的文件
0: jdbc:drill:zk=local> select * from dfs.root.`csv_line_delimit`;
+-------------------------+
| columns |
+-------------------------+
| ["hello","1","2","3!"] |
. . .
我也有同样的经历。首先,我将 1 table 从 oracle 导入到 hadoop 2.7.1,然后通过 drill 进行查询。这是我通过网络设置的插件配置 UI:
{
"type": "file",
"enabled": true,
"connection": "hdfs://192.168.19.128:8020",
"workspaces": {
"hdf": {
"location": "/user/hdf/my_data/",
"writable": false,
"defaultInputFormat": "csv"
},
"tmp": {
"location": "/tmp",
"writable": true,
"defaultInputFormat": null
}
},
"formats": {
"csv": {
"type": "text",
"extensions": [
"csv"
],
"delimiter": ","
}
}
}
然后,在 drill cli 中,这样查询:
USE hdfs.hdf
SELECT * FROM part-m-00000
此外,在hadoop文件系统中,当我cat 'part-m-00000'的内容时,控制台打印出以下格式:
2015-11-07 17:45:40.0,6,8
2014-10-02 12:25:20.0,10,1