Hive数据导入
Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类似于SQL的查询功能,在Hive中,数据的导入主要有两种方式:通过命令行和通过API。
1、命令行导入
使用Hive命令行工具,可以通过LOAD DATA
命令将本地文件系统或者HDFS上的文件导入到Hive表中,以下是一些常用的参数:
LOCAL INPATH
:从本地文件系统中加载数据。
HDFS INPATH
:从HDFS文件系统中加载数据。
TEXTFILE
:表示文本文件格式。
SEQUENCEFILE
:表示序列文件格式。
ORC
:表示Orc文件格式,支持压缩和列存储等特性。
PARQUET
:表示Parquet文件格式,支持压缩和列存储等特性。
FIELDS TERMINATED BY
:表示字段分隔符。
LINES TERMINATED BY
:表示行分隔符。
NULL DELIMITED
:表示空值用NULL分隔。
示例代码:
-从本地文件系统导入数据 LOAD DATA INPATH '/path/to/local/data' INTO TABLE my_table; -从HDFS文件系统导入数据 LOAD DATA INPATH 'hdfs://localhost:9000/path/to/hdfs/data' INTO TABLE my_table;
2、API导入
除了命令行导入,还可以使用Hive提供的API进行数据导入,可以使用Python的pyhive
库来实现数据的导入,首先需要安装pyhive
库:
pip install pyhive
然后可以使用以下代码将本地文件系统或者HDFS上的文件导入到Hive表中:
from pyhive import hive import pandas as pd from io import StringIO 从本地文件系统导入数据 with open('/path/to/local/data', 'r') as f: data = f.read() df = pd.read_csv(StringIO(data), sep='\t') 根据实际情况设置分隔符 conn = hive.Connection(host='localhost', port=10000, username='myuser', password='mypassword') cursor = conn.cursor() cursor.execute("CREATE TABLE IF NOT EXISTS my_table (col1 STRING, col2 INT)") 根据实际情况创建表结构 for index, row in df.iterrows(): cursor.execute("INSERT INTO my_table VALUES (%s, %s)", (row['col1'], row['col2'])) 根据实际情况设置列名和数据类型 conn.commit() conn.close()
Hive数据导出
在Hive中,数据的导出主要有两种方式:通过命令行和通过API,与导入类似,这里也分别介绍这两种方式。
1、命令行导出
使用Hive命令行工具,可以通过EXPORT
命令将Hive表中的数据导出到本地文件系统或者HDFS上,以下是一些常用的参数:
LOCAL OUTFILE
:将数据导出到本地文件系统中。
HDFS OUTFILE
:将数据导出到HDFS文件系统中。
TEXTFILE
:表示文本文件格式。
SEQUENCEFILE
:表示序列文件格式。
ORC
:表示Orc文件格式,支持压缩和列存储等特性。
PARQUET
:表示Parquet文件格式,支持压缩和列存储等特性。
FIELDS TERMINATED BY
:表示字段分隔符。
LINES TERMINATED BY
:表示行分隔符。
NULL DELIMITED
:表示空值用NULL分隔。
示例代码:
-将数据导出到本地文件系统 EXPORT TABLE my_table TO '/path/to/local/output';
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/132300.html