Scala &引用;丰富;从另一个DF(或HBase)触发数据帧

Scala &引用;丰富;从另一个DF(或HBase)触发数据帧,scala,apache-spark,hive,hbase,Scala,Apache Spark,Hive,Hbase,我不确定这是正确的标题,所以请随意建议编辑。顺便说一句,我对Scala和Spark真的很陌生 基本上,我有一个DFDF_1看起来像这样: | ID | name | city | u ID| |0 |“abc”| 123| |1 |“cba”| 124| … city\u id是大型HBase中的关键: 123;纽约。。。。124; 洛杉矶。。。。等等 结果应该是df_1: | ID | name | city | u ID| |0 |“abc”|纽约| |1 |“cba”|洛杉矶| … 我的方

我不确定这是正确的标题,所以请随意建议编辑。顺便说一句,我对Scala和Spark真的很陌生

基本上,我有一个DF
DF_1
看起来像这样:

| ID | name | city | u ID|
|0 |“abc”| 123|
|1 |“cba”| 124|
…

city\u id
是大型HBase中的关键:

123;纽约。。。。124; 洛杉矶。。。。等等

结果应该是
df_1

| ID | name | city | u ID|
|0 |“abc”|纽约|
|1 |“cba”|洛杉矶|
…

我的方法是在HBase上创建一个外部配置单元表,其中包含我需要的列。但我也不知道如何以最有效的方式加入他们

我想有一种方法可以直接从HBase实现,但我也不知道如何实现


如有任何提示,我们将不胜感激。:)

无需在hbase上创建iTerMedia配置单元表。Spark sql可以直接处理所有类型的非结构化数据。只需使用

获得正确的hbase数据帧后,请使用以下命令 获取联接数据帧的spark scala代码示例:

val df=Seq((0,"abc",123),(1,"cda",124),(2,"dsd",125),(3,"gft",126),(4,"dty",127)).toDF("ID","name","city_id")

 val hbaseDF=Seq((123,"New York"),(124,"Los Angeles"),(125,"Chicago"),(126,"Seattle")).toDF("city_id","city_name")

 df.join(hbaseDF,Seq("city_id"),"inner").drop("city_id").show()