Scala &引用;丰富;从另一个DF(或HBase)触发数据帧
我不确定这是正确的标题,所以请随意建议编辑。顺便说一句,我对Scala和Spark真的很陌生 基本上,我有一个DFScala &引用;丰富;从另一个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”|洛杉矶| … 我的方
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()