【问题标题】:"Enrich" Spark DataFrame from another DF (or from HBase)来自另一个 DF(或来自 HBase)的“丰富”Spark DataFrame
【发布时间】:2019-12-11 17:17:53
【问题描述】:

我不确定这是正确的标题,因此请随时提出修改建议。顺便说一句,我对 Scala 和 Spark 真的很陌生。

基本上,我的 DF df_1 看起来像这样:

| ID | name | city_id | | 0 | "abc"| 123 | | 1 | "cba"| 124 | ...

city_id 是一个巨大的 HBase 中的一个键:

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

结果应该是df_1:

| ID | name | city_id | | 0 | "abc"| New York| | 1 | "cba"| Los Angeles| ...

我的方法是在 HBase 之上创建一个外部 Hive 表,其中包含我需要的列。但话又说回来,我不知道如何以最有效的方式加入他们。

我想有一种方法可以直接从 HBase 执行此操作,但我不知道如何操作。

感谢任何提示。 :)

【问题讨论】:

    标签: scala apache-spark hive hbase


    【解决方案1】:

    没有必要在 hbase 上创建一个 itermediate hive 表。 Spark sql 可以直接处理各种非结构化数据。只需使用 hbase data source 将 hbase 数据加载到数据框中即可

    一旦您拥有正确的 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()
    

    【讨论】:

      猜你喜欢
      • 2021-10-04
      • 1970-01-01
      • 2018-04-04
      • 2023-03-07
      • 1970-01-01
      • 2018-01-16
      • 2020-03-20
      • 1970-01-01
      • 2018-08-14
      相关资源
      最近更新 更多