如何使用hortonworks spark shc将Dataframe值存储为rowkey和column?

nnt7mjpx  于 2021-05-27  发布在  Spark
关注(0)|答案(2)|浏览(397)

我正在使用shc core将spark数据集写入hbase,有关更多详细信息,请参见此处。
这是我当前的shc目录:

def catalog = s"""{
        |"table":{"namespace":"default", "name":"table1"},
        |"rowkey":"key",
        |"columns":{
          |"col0":{"cf":"rowkey", "col":"key", "type":"string"},
          |"col1":{"cf":"cf1", "col":"col1", "type":"boolean"},
          |"col2":{"cf":"cf2", "col":"col2", "type":"double"},
          |"col3":{"cf":"cf3", "col":"col3", "type":"float"},
          |"col4":{"cf":"cf4", "col":"col4", "type":"int"},
          |"col5":{"cf":"cf5", "col":"col5", "type":"bigint"},
          |"col6":{"cf":"cf6", "col":"col6", "type":"smallint"},
          |"col7":{"cf":"cf7", "col":"col7", "type":"string"},
          |"col8":{"cf":"cf8", "col":"col8", "type":"tinyint"}
        |}
      |}""".stripMargin

因为sof规则代码不能太长,我只能给你一部分:
这是我的hbase目录:

{
    "columns": {
        "RXSJ": {
            "col": "RXSJ",
            "cf": "info",
            "type": "bigint"
        },
        "LATITUDE": {
            "col": "LATITUDE",
            "cf": "info",
            "type": "float"
        },
        "ZJHM": {
            "col": "ZJHM",
            "cf": "rowkey",
            "type": "string"
        },
        "AGE": {
            "col": "AGE",
            "cf": "info",
            "type": "int"
        }
    },
    "rowkey": "ZJHM",
    "table": {
        "namespace": "default",
        "name": "mongo_hbase_spark_out"
    }
}

其他字段正常输出,但不输出rowkey列。

如何将rowkey额外输出为列?

lqfhib0f

lqfhib0f1#

经过测试,我解决了这个问题。整个想法是输出同一列两次
这是我新生成的shc目录:

{
    "columns": {
        "rowkey_ZJHM": {
            "col": "ZJHM",
            "cf": "rowkey",
            "type": "string"
        },
        "ZJHM": {
            "col": "ZJHM",
            "cf": "info",
            "type": "string"
        },
        "AGE": {
            "col": "AGE",
            "cf": "info",
            "type": "int"
        }
    },
    "rowkey": "ZJHM",
    "table": {
        "namespace": "default",
        "name": "mongo_hbase_spark_out"
    }
}


我认为rowkey列是hortonworks spark shc的特殊列,它总是输出第一列。只考虑其他方式输出到其他cf。
如果你有更好的建议,请告诉我
谢谢!

i7uaboj4

i7uaboj42#

你不会得到 rowkey 以与其他列相同的方式显示。在hbase目录的描述中提到:
请注意,rowkey还必须详细定义为列(col0),该列具有特定的cf(rowkey)。
因此,尽管您在 columns 目录的一部分。
这个 rowkey 仅在屏幕截图显示的实际行键中可见。

相关问题