将表从Hive复制到HDFS

时间:2014-04-29 09:38:41

标签: hadoop hive mahout

我想将HIVE表从HIVE复制到HDFS。请建议步骤。后来我想将这个HFDS文件用于Mahout机器学习。

我使用存储在HDFS中的数据创建了一个HIVE表。然后我对该数据集中的少数变量进行了转换,并从中创建了一个新表。 现在我想将HIVE表从HIVE转移到HDFS。所以它可以被Mahout阅读。

当我输入

hadoop fs -ls -R /user/hive/

我可以看到我创建的表格列表,

drwxr-xr-x   - hdfs supergroup          0 2014-04-25 17:00 /user/hive/warehouse/telecom.db/telecom_tr
-rw-r--r--   1 hdfs supergroup    5199062 2014-04-25 17:00 /user/hive/warehouse/telecom.db/telecom_tr/000000_0

我尝试将文件从Hive复制到HDFS,

hadoop fs -cp /user/hive/warehouse/telecom.db/telecom_tr/* /user/hdfs/tele_copy

这里我除了tele_copy应该是一个存储在hdfs中的csv文件。

但当我hadoop fs -tail /user/hdfs/tele_copy时,我得到以下结果。

7.980.00.00.0-9.0-30.00.00.670.00.00.00.06.00.06.670.00.670.00.042.02.02.06.04.0198.032.030.00.03.00.01.01.00.00.00.01.00.01.01.00.00.00.01.00.00.00.00.00.00.06.00.040.09.990.01.01
32.64296.7544.990.016.00.0-6.75-27.844.672.3343.334.671.3331.4725.05.3386.6754.07.00.00.044.01.01.02.02.0498.038.00.00.07.01.00.00.00.01.00.00.01.00.00.00.00.00.01.01.01.00.01.00.00.03.00.010.029.991.01.01
30.52140.030.00.250.00.0-42.0-0.520.671.339.00.00.034.6210.677.3340.09.332.00.00.040.02.02.01.01.01214.056.050.01.05.00.00.00.00.00.00.01.00.01.01.00.00.01.01.00.00.01.00.00.00.06.00.001.00.00.01.01
60.68360.2549.990.991.250.038.75-10.692.331.6715.670.00.0134.576.00.0102.6729.674.00.00.3340.02.01.08.03.069.028.046.00.05.00.01.00.00.00.00.00.01.01.01.00.00.00.01.00.00.01.00.00.00.02.00.020.0129.990.01.01

这不是逗号分隔。

运行此命令后,我收到了同样的结果。

INSERT OVERWRITE DIRECTORY '/user/hdfs/data/telecom' SELECT * FROM telecom_tr;

当我做-ls

drwxr-xr-x   - hdfs supergroup          0 2014-04-29 17:34 /user/hdfs/data/telecom
-rw-r--r--   1 hdfs supergroup    5199062 2014-04-29 17:34 /user/hdfs/data/telecom/000000_0

当我做猫时,结果不是CSV

1 个答案:

答案 0 :(得分:0)

您真正要求的是让Hive将文件存储为CSV文件。尝试使用ROW FORMAT DELIMITED FIELDS TERMINATED BY ',',请参阅Row Format, Storage Format, and SerDe