Apache spark 将字段加载并映射到配置单元表
我是apacheApache spark 将字段加载并映射到配置单元表,apache-spark,hadoop,hive,hdfs,Apache Spark,Hadoop,Hive,Hdfs,我是apacheHive的新手。我在HDFS中有两个文件,一个文件包含业务数据,另一个类似于映射表 例如: 文件1类似于: id;value 1;val1 2;val2 3;val3 文件2如下所示: value;mappedValue val1;newValue1 val2;newValue2 val3;newValue3 我想创建一个包含具有映射值的数据的配置单元表 我想要的结果是这样的 id;value 1;newValue1 2;newValue2 3;newValue3
Hive的新手。我在HDFS
中有两个文件,一个文件包含业务数据,另一个类似于映射表
例如:
文件1类似于:
id;value
1;val1
2;val2
3;val3
文件2如下所示:
value;mappedValue
val1;newValue1
val2;newValue2
val3;newValue3
我想创建一个包含具有映射值的数据的配置单元表
我想要的结果是这样的
id;value
1;newValue1
2;newValue2
3;newValue3
最好的方法是什么?有很多方法
一种方法如下:
第一:从直线(配置单元命令行)在配置单元中创建数据库和表
$beeline-ujdbc:hive2://localhost:10000
如果不存在数据库业务,则创建数据库;
显示数据库;
使用db_业务;
如果不存在业务数据,则创建表(
id INT,
值(字符串)
以“\;”结尾的行格式分隔字段
存储为文本文件
TBLProperty(“skip.header.line.count”=“1”);
如果映射表不存在,则创建表(
值字符串,
映射(U值字符串)
以“\;”结尾的行格式分隔字段
存储为文本文件
TBLProperty(“skip.header.line.count”=“1”);
展示表格;
第二:我们必须将数据加载到表中。
LOAD DATA INPATH
将从源文件中删除该文件
将路径'/home/user/mydir/business\u DATA.csv'中的数据加载到表business\u数据中;
将路径“/home/user/mydir/mapping_table.csv”中的数据加载到表mapping_table中;
您可以使用hdfs dfs
命令将数据加载到配置单元表中,而无需从源位置删除数据
$hdfs dfs-cp/home/user/origin/file.csv/user/hive/warehouse/db_business.db/business_data
$hdfs dfs-cp/home/user/origin/file1.csv/user/hive/warehouse/db_business.db/mapping_table
第三:我们可以使用CTAS(createtable as select)
创建第三个表,并连接两个表
创建主表\u表
以“\;”结尾的行格式分隔字段
作为文本文件存储为
选择id,映射的值作为值
从业务单元数据中选择b
将映射_表连接为m ON(b.value=m.value);
从主表中选择*;
+------------------+---------------------+--+
|主_table.id |主_table.value|
+------------------+---------------------+--+
|1 |新价值1|
|2 |新价值2|
|3 |新价值3|
+------------------+---------------------+--+