Привести столбец к двоичному типу данных в искре - PullRequest
0 голосов
/ 06 января 2020

У меня есть сценарий использования Spark, в котором мне нужно создать пустой столбец и привести его к двоичному типу данных. Я попробовал ниже, но это не работает. Когда я заменяю двоичное целое число, это работает. Я также попробовал BinaryType и Array [Byte]. Должно быть, что-то здесь упущено.

val ip1 = sqlContext.read
    .parquet("/home/hadoop/work/aa/bbb/ccc/data/today")
    .toDF();
val ip2 = ip1
    .withColumn("user_hll",lit("0"))
    .select(col("start_timestamp_hr"),col("user_hll"))
    .withColumn("hll",col("user_hll").cast("Binary"))

Любая помощь приветствуется

Ответы [ 3 ]

1 голос
/ 06 января 2020

Если вы хотите нулевой двоичный столбец, все, что вам нужно, это:

.withColumn("hll", lit(null).cast(org.apache.spark.sql.types.BinaryType))

1 голос
/ 06 января 2020

вместо приведения вы также можете использовать lit напрямую

.withColumn("hll",lit("0".getBytes)) // gives [30]

или

.withColumn("hll",lit(Array.empty[Bytes])) // gives []

или, если хотите ǹull, вы можете сделать:

.withColumn("hll",typedLit(Option.empty[Array[Byte]])) // gives null
0 голосов
/ 06 января 2020

Это сработало. Простая мисс с моей стороны

.cast("Binary") 

Любой лучший способ будет оценен

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