Hadoop后端有数百万条记录插入

时间:2015-09-29 04:39:52

标签: hadoop hive hiveql

我是hadoop的新手,有人可以建议我如何将数百万条记录上传到hadoop吗?我可以用蜂巢这样做,我在哪里可以看到我的hadoop记录?

到目前为止,我已经使用hive在hadoop上创建数据库,我使用localhost 50070访问它。但是我无法将csv文件中的数据从终端加载到hadoop。因为它给了我错误:

  

失败:语义分析出错:第2行:0无效路径''/ user / local / hadoop / share / hadoop / hdfs'':没有匹配路径的文件hdfs:// localhost:54310 / usr / local / hadoop /共享/ hadoop的/ HDFS

EROOR IN THE TERMINAL:

有人可以建议我解决一些问题吗?

2 个答案:

答案 0 :(得分:1)

您应该使用LOAD DATA LOCAL INPATH <local-file-path>将文件从本地目录加载到Hive表。

如果你没有指定 LOCAL ,那么load命令将假定从HDFS位置查找给定的文件路径以加载。

请参考以下链接, https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML#LanguageManualDML-Loadingfilesintotables

答案 1 :(得分:1)

我想最初数据是在本地文件系统中。

所以一个简单的工作流程可能是:从本地加载数据到hadoop文件系统(HDFS),在其上创建一个hive表,然后在hive表中加载数据。

第1步:

// put in HDFS
$~ hadoop fs -put /local_path/file_pattern* /path/to/your/HDFS_directory
// check files 
$~ hadoop fs -ls /path/to/your/HDFS_directory

第2步:

CREATE EXTERNAL TABLE if not exists mytable (
Year int, 
name string
) 
row format delimited 
fields terminated by ',' 
lines terminated by '\n'
stored as TEXTFILE;

//显示表格结构

describe mytable;

第3步:

Load data local INPATH '/path/to/your/HDFS_directory'
OVERWRITE into TABLE mytable;

//简单的hive语句来获取前10个记录

SELECT * FROM mytable limit 10;