1.数据生成
生成1亿条数据到文件data_gen_multi_proc_xxxx.txt中,cpu8核耗时4min左右
# -*- coding: utf-8 -*-
import datetime
import random
from multiprocessing import Pool, cpu_count
def generate_data(num):
data = []
for _ in range(num):
line = ' '.join(str(random.randint(1, 9999)) for _ in range(5))
data.append(line)
return '\n'.join(data)
if __name__ == '__main__':
startTime = datetime.datetime.now()
# 要生成数据的总行数,此处为100万行
num_lines = 100000000
p = Pool(cpu_count())
filename = 'data_gen_multi_proc_' + str(num_lines) + '.txt'
with open(filename, 'w') as f:
with Pool(processes=cpu_count()) as p:
results = p.map(generate_data, [num_lines//cpu_count()] * cpu_count())
f.write('\n'.join(results))
endTime = datetime.datetime.now()
print("multi_costTime: " + str(endTime - startTime))
2.数据上传至Hadoop
# 上传至Hadoop目录
./hadoop fs -put data_gen_multi_proc_xxxx.txt /path/to/data_gen
3.创建hive库表
3.1 hive库创建形式
CREATE (DATABASE|SCHEMA) [IF NOT EXISTS] database_name
[COMMENT database_comment] //关于数据块的描述
[LOCATION hdfs_path] //指定数据库在HDFS上的存储位置
[WITH DBPROPERTIES (property_name=property_value, ...)]; //指定数据块属性
3.2 库表创建
这里不细说具体格式,可以通过hive基础知识进行学习。
Hive基础学习_hive在线学习_程序员的人生K的博客-CSDN博客
Hive超详细介绍_hive中reducer什么意思_「已注销」的博客-CSDN博客
CREATE DATABASE IF NOT EXISTS test_hive_database;
USE test_hive_database;
# 以textfile来存储数据
CREATE TABLE `test_hive_table`(
col1 INT,
col2 INT,
col3 INT,
col4 INT,
col5 INT
)
PARTITIONED BY (daytime STRING)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ' '
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION
'hadoop路径';
3.3 分区创建并加载数据
# 先新建分区
alter table test_hive_table add partition (daytime='2021-06-06');
# 在hive客户端执行下面脚本,将数据加载到test_hive_table表中
load data inpath '/path/to/data_gen/data_gen_multi_proc_xxxx.txt' into table test_hive_table partition (daytime='2021-06-06');
# 验证是否成功加载
select count(1) from test_hive_table;
*或者通过其他hive表进行insert ... select ...文章来源:https://www.toymoban.com/news/detail-560528.html
# 在hive客户端执行下面脚本
insert into table test_hive_table partition (daytime='2021-06-06') select * from test_data;
# 验证是否成功加载
select count(1) from test_hive_table;
ok,到这里就结束了。文章来源地址https://www.toymoban.com/news/detail-560528.html
到了这里,关于hive表导入外部数据的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!