由于这是来自新手...
我已经为我设置了 Hadoop 和 Hive,因此我可以在我的计算机上运行 Hive 查询来访问 AWS 集群上的数据。我可以像使用 MS SQL Server 一样使用存储在我的计算机上的 .csv 数据运行 Hive 查询吗?
那么如何将 .csv 数据加载到 Hive 中?它与 Hadoop 有什么关系,我应该运行哪种模式?
我应该关心哪些设置,以便如果我做错了什么,我可以随时返回并在亚马逊上运行查询,而不会影响之前为我设置的内容?
由于这是来自新手...
我已经为我设置了 Hadoop 和 Hive,因此我可以在我的计算机上运行 Hive 查询来访问 AWS 集群上的数据。我可以像使用 MS SQL Server 一样使用存储在我的计算机上的 .csv 数据运行 Hive 查询吗?
那么如何将 .csv 数据加载到 Hive 中?它与 Hadoop 有什么关系,我应该运行哪种模式?
我应该关心哪些设置,以便如果我做错了什么,我可以随时返回并在亚马逊上运行查询,而不会影响之前为我设置的内容?
让我通过以下简单的步骤帮助您:
脚步:
首先,使用 csv 文件中的字段名称在 hive 上创建一个表。例如,您的 csv 文件包含三个字段(id、name、salary),并且您想在 hive 中创建一个名为“staff”的表。使用以下代码在 hive 中创建表。
hive> CREATE TABLE Staff (id int, name string, salary double) row format delimited fields terminated by ',';
其次,既然您的表是在 hive 中创建的,让我们将 csv 文件中的数据加载到 hive 上的“staff”表中。
hive> LOAD DATA LOCAL INPATH '/home/yourcsvfile.csv' OVERWRITE INTO TABLE Staff;
最后,在 hive 上显示“Staff”表的内容以检查数据是否已成功加载
hive> SELECT * FROM Staff;
谢谢。
if you have a hive setup you can put the local dataset directly using Hive load command in hdfs/s3.
You will need to use "Local" keyword when writing your load command.
Syntax for hiveload command
LOAD DATA [LOCAL] INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]
Refer below link for more detailed information. https://cwiki.apache.org/confluence/display/Hive/LanguageManual%20DML#LanguageManualDML-Loadingfilesintotables
还有另一种启用此功能的方法,
使用 hadoop hdfs -copyFromLocal 将 .csv 数据文件从本地计算机复制到 HDFS 中的某个位置,例如“/path/filename”
进入 Hive 控制台,运行以下脚本从文件中加载,使其成为 Hive 表。注意 '\054' 是 'comma' 八进制数的 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';
对于 csv 文件格式数据将采用以下格式
"column1", "column2","column3","column4"
如果我们将使用以“,”结尾的字段,那么每一列都会得到如下值。
"column1" "column2" "column3" "column4"
此外,如果任何列值具有comma
作为值,那么它根本不起作用。
所以创建表的正确方法是使用 OpenCSVSerde
create table tableName (column1 datatype, column2 datatype , column3 datatype , column4 datatype)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
STORED AS TEXTFILE ;
您可以试试这个,以下是一些关于如何生成文件的示例。工具——https: //sourceforge.net/projects/csvtohive/?source=directory
使用浏览选择一个 CSV 文件并设置 hadoop 根目录,例如:/user/bigdataproject/
工具使用所有 csv 文件生成 Hadoop 脚本,以下是生成的 Hadoop 脚本示例,用于将 csv 插入 Hadoop
#!/bin/bash -v
hadoop fs -put ./AllstarFull.csv /user/bigdataproject/AllstarFull.csv
hive -f ./AllstarFull.hive
hadoop fs -put ./Appearances.csv /user/bigdataproject/Appearances.csv
hive -f ./Appearances.hive
hadoop fs -put ./AwardsManagers.csv /user/bigdataproject/AwardsManagers.csv
hive -f ./AwardsManagers.hive
生成的 Hive 脚本示例
CREATE DATABASE IF NOT EXISTS lahman;
USE lahman;
CREATE TABLE AllstarFull (playerID string,yearID string,gameNum string,gameID string,teamID string,lgID string,GP string,startingPos string) row format delimited fields terminated by ',' stored as textfile;
LOAD DATA INPATH '/user/bigdataproject/AllstarFull.csv' OVERWRITE INTO TABLE AllstarFull;
SELECT * FROM AllstarFull;
谢谢维杰
只有在以下情况下,您才能将本地 CSV 文件加载到 Hive:
hive
orbeeline
进行上传。