使用二进制(数组[字节])数据的Spark DataFrame过滤器

时间:2017-08-14 15:27:26

标签: apache-spark apache-spark-sql uuid

我有一个来自JDBC表的DataFrame命中MySql,我需要使用UUID对其进行过滤。数据使用二进制文件(16)存储在MySql中,当在spark中查询时,按预期将其转换为Array [Byte]。

我是新手,并且一直在尝试各种方法将UUID类型的变量传递给DataFrame的过滤器方法。 我试过像

这样的陈述
In [457]: (df.assign(i=df.index, c=df.groupby(level=0).cumcount()).pivot('i', 'c', 0)
           .rename_axis(None).rename_axis(None, 1))
Out[457]:
   0  1
0  a  b
1  c  d

所有这些错误与不同的消息。 我只需要以某种方式传递二进制类型,但似乎无法指出如何正确地做到这一点。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

在网上查看更多资源后,我找到了一种方法,可以在不使用过滤方法的情况下完成此任务。

当我从我的sparkSession中读取内容时,我只使用了一个adhoc表而不是表名,如下所示:

sparkSession.read.jdbc(connectionString, s"(SELECT id, {other col omitted) FROM MyTable WHERE id = 0x$id) AS MyTable", props)

这会为我预先过滤结果,然后我根据需要使用数据框。

如果有人知道使用过滤器的解决方案,我仍然很想知道它,因为在某些情况下这会很有用。