hadoop - 将文件文件配置单元以序列文件格式导出到hdfs

标签 hadoop hive cloudera cloudera-cdh sequencefile

我正在尝试执行配置单元查询,并以 SEQUENCE FILE 格式将其输出导出为HDFS。

beeline> show create table test_table;

+--------------------------------------------------------------------------------------+
|                                    createtab_stmt                                    |
+--------------------------------------------------------------------------------------+
| CREATE TABLE `test_table`(                                                           |
|   `XXXXXXXXXXXXXX` bigint,                                                           |
|   `XXXXXXXXXXXxx` int,                                                               |
|   `XXXXXXXXX` int,                                                                   |
|   `XXXXXX` int)                                                                      |
| PARTITIONED BY (                                                                     |
|   `XXXXXXXX` string,                                                                 |
|   `XXXX` string,                                                                     |
|   `XXXXXXXX` string)                                                                 |
| ROW FORMAT DELIMITED                                                                 |
|   FIELDS TERMINATED BY '\u00001'                                                     |
| STORED AS INPUTFORMAT                                                                |
|   'org.apache.hadoop.mapred.SequenceFileInputFormat'                                 |
| OUTPUTFORMAT                                                                         |
|   'org.apache.hadoop.hive.ql.io.HiveSequenceFileOutputFormat'                        |
| LOCATION                                                                             |
|   'hdfs://localhost:8020/user/hive/warehouse/local_hive_report.db/test_table'        |
| TBLPROPERTIES (                                                                      |
|   'transient_lastDdlTime'='1437569941')                                              |
+--------------------------------------------------------------------------------------+

这是我尝试导出数据的查询,
beeline> INSERT OVERWRITE DIRECTORY '/user/nages/load/date' 
    ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n' 
    STORED AS SEQUENCEFILE 
    SELECT * FROM test_table WHERE column=value;

这是错误,
    Error: Error while compiling statement: FAILED: ParseException line 1:61 
cannot recognize input near 'ROW' 'FORMAT' 'DELIMITED' in statement (state=42000,code=40000)

我在这里想念什么吗?

软件版本:
Cloudera hadoop CDH5.3.3,
Apache版本0.13.1。

编辑:
在下面更新了我的临时解决方案。

最佳答案

这是因为配置单元查询默认情况下将使用^作为分隔符。
您可以通过导出到本地文件系统来尝试相同的操作。

beeline> INSERT OVERWRITE LOCAL DIRECTORY '/user/~local directoryname' 
    ROW FORMAT DELIMITED 
    FIELDS TERMINATED BY ',' 
    LINES TERMINATED BY '\n' 
    STORED AS SEQUENCEFILE 
    SELECT * FROM test_table WHERE column=value;

关于hadoop - 将文件文件配置单元以序列文件格式导出到hdfs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31645847/

相关文章:

hadoop - 自加入后的 Hive Group

hadoop - 如何在 Pig-Latin Script 中处理多个 STORES

hadoop - Oozie Hive 操作使用 -i init 脚本

java - 无法解压 snappy 文件,即使指定了 -Djava.library.path=/*/*/

hadoop - Flink 在 HDFS 上写入产生空文件

java - 在从属节点上执行的 Hadoop java 映射器作业,目录问题

hive - 导出 Hive 查询结果

hadoop - 有关如何从 Hive 查询中设置 Hive 属性的示例

ubuntu - 如何在我的系统上拥有类似 Amazon EC2 的环境?

java - 为什么 start-all.sh 的根本原因是 "failed to launch org.apache.spark.deploy.master.Master: JAVA_HOME is not set"?