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

Hadoop backend with millions of records insertion

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

到目前为止,我一直使用 hive 在 hadoop 上创建数据库,我正在使用本地主机 50070 访问它。但是我无法从终端将数据从 csv 文件加载到 hadoop。因为它给我错误:

FAILED: Error in semantic analysis: Line 2:0 Invalid path ''/user/local/hadoop/share/hadoop/hdfs'': No files matching path hdfs://localhost:54310/usr/local/hadoop/share/hadoop/hdfs

谁能建议我一些解决方法?

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

如果您不指定 LOCAL ,则加载命令将假设从 HDFS 位置查找给定的文件路径以进行加载。

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

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

所以一个简单的工作流可以是:将数据从本地加载到 hadoop 文件系统 (HDFS),在其上创建一个配置单元 table,然后将数据加载到配置单元 table.

第 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;

//显示table结构

describe mytable;

第 3 步:

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

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

SELECT * FROM mytable limit 10;