我有一个来自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
所有这些错误与不同的消息。 我只需要以某种方式传递二进制类型,但似乎无法指出如何正确地做到这一点。
非常感谢任何帮助。
答案 0 :(得分:0)
在网上查看更多资源后,我找到了一种方法,可以在不使用过滤方法的情况下完成此任务。
当我从我的sparkSession中读取内容时,我只使用了一个adhoc表而不是表名,如下所示:
sparkSession.read.jdbc(connectionString, s"(SELECT id, {other col omitted) FROM MyTable WHERE id = 0x$id) AS MyTable", props)
这会为我预先过滤结果,然后我根据需要使用数据框。
如果有人知道使用过滤器的解决方案,我仍然很想知道它,因为在某些情况下这会很有用。