Apache spark 将字段加载并映射到配置单元表

Apache 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

我是apache
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|
+------------------+---------------------+--+