由于这是来自一个新手...
我已经为我设置了 Hadoop 和 Hive,因此我可以在我的计算机上运行 Hive 查询,访问 AWS 集群上的数据。 我能否像使用 MS SQL Server 那样,使用存储在电脑上的 .csv 数据运行 Hive 查询?
如何将 .csv 数据加载到 Hive 中?这与 Hadoop 有什么关系?
我应该注意哪些设置,这样如果我做错了什么,我就可以随时返回并在亚马逊上运行查询,而不会影响之前的设置?
如果已安装了 Hive,则可以使用 Hive load 命令直接将本地数据集放入 hdfs/s3。
在编写加载命令时,您需要使用"Local"关键字。
hiveload 命令的语法
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
更多详细信息,请参考以下链接。 <https://cwiki.apache.org/confluence/display/Hive/LanguageManual%20DML#LanguageManualDML-Loadingfilesintotables>;
还有另一种实现方法、
使用 hadoop hdfs -copyFromLocal 将 .csv 数据文件从本地计算机复制到 HDFS 中的某处,例如 '/path/filename';
进入 Hive 控制台,运行以下脚本加载文件,使其成为 Hive 表。注意,'\054'是八进制数中'逗号'的 ascii 编码,代表字段分隔符。
CREATE EXTERNAL TABLE table name (foo INT, bar STRING)
COMMENT 'from csv file'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\054'
STORED AS TEXTFILE
LOCATION '/path/filename';
您可以试试这个、 以下是几个如何生成文件的示例。 工具 -- https://sourceforge.net/projects/csvtohive/?source=directory
1.使用 "浏览 "选择 CSV 文件,并设置 hadoop 根目录,例如:/user/bigdataproject/
2.工具生成包含所有 csv 文件的 Hadoop 脚本,以下是 生成的 Hadoop 脚本示例。
#!/bin/bash -v<br/>;
hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv
hive -f ./AllstarFull.hive<br/>;
hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv
hive -f ./Appearances.hive<br/>;
hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv
hive -f ./AwardsManagers.hive</pre></code>;
3.生成的 Hive 脚本示例
<pre><code>CREATE DATABASE IF NOT EXISTS lahman;<br/>;
USE lahman;<br/>;
CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) 行格式分隔字段,以 ',' 结尾,存储为文本文件;<br/>;
LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;<br/>;
SELECT * FROM AllstarFull;</pre></code>;
谢谢 Vijay