Как сохранить значение Dataframe в виде ключа строки, а также столбца с помощью Hortonworks-spark shc? - PullRequest
0 голосов
/ 27 мая 2020

Я использую 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 не выводится.

enter image description here

Как я могу вывести rowkey дополнительно в виде столбца?

Ответы [ 2 ]

1 голос
/ 27 мая 2020

Вы не получите rowkey видимым так же, как другие столбцы. В описании каталога HBase упоминается:

Обратите внимание, что ключ строки также должен быть подробно определен как столбец (col0), который имеет спецификацию c cf (rowkey).

Следовательно, он не будет отображаться, хотя вы указали его в разделе columns своего каталога.

rowkey отображается только как фактический ключ строки, как показано на скриншоте.

0 голосов
/ 28 мая 2020

После тестирования решил проблему. Вся идея состоит в том, чтобы вывести один и тот же столбец дважды

Это мой новый сгенерированный 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"
    }
}

hbase scan result

Я думаю, что столбец rowkey - это специальный столбец Hortonworks-spark shc, он всегда выводит первый столбец. Подумайте только о других способах вывода в другой cf.

Дайте мне знать, если у вас есть лучшие предложения

Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...