首页 > 解决方案 > 以 blob 形式获取列名和值

问题描述

示例表数据:

marketplace_id     product_key        quantity         product_category
      1              "p1"               100                  "pc1"

如果我运行这样的查询

SELECT binary(CONCAT(*)) AS binary_str FROM table;

我将得到 1p1100pc1一个字节数组表示,因为它连接了所有列

有没有我可以编写的查询来将整个记录作为一个像这样的 blob,它是结构化的并将列名映射到值?

{
    marketplace_id: 1
    product_key: "p1",
    quantity: 100
    product_category: "pc1"
}

我的目标是binary_str成为一个包含每个列组合的 blob 的列,如下所示:

     |  binary_str |
      -------------
     | {{lkdsfafa}}|

where {{lkdsfafa}} is actually
{
    marketplace_id: 1
    product_key: "p1",
    quantity: 100
    product_category: "pc1"
}

所以每一行都是Array[Byte]上述结构的表示,所以我可以调用我的一个自定义 UDFArray[Byte]作为输入参数

标签: scalaapache-spark-sql

解决方案


推荐阅读