假设SchemaRDD rdd
具有一个注册表customer
。您希望根据用户输入筛选出记录。你可能有一个想法如何做到这一点是如下:
rdd.sqlContext.sql(s"SELECT * FROM customer WHERE name='$userInput'")
字符串
然而,从PHP的旧时代开始,我们就知道这可能会导致令人讨厌的事情。是否存在与PreparedStatement等效的语句?我能找到的唯一看起来有点相关的东西是org.apache.commons.lang.StringEscapeUtils.escapeSql
。
3条答案
按热度按时间flvlnr441#
一种选择是使用thriftserver来公开jdbc,然后可以使用常用的技术(PreparedStatement等)来防止sql注入。
yftpprvb2#
字符串
以上是在pyspark中,但它可以在Scala或其他语言中完成。诀窍是注册一个udf。
pftdvrlh3#
有关如何在pyspark 3.3.0+中使用内置功能执行此操作,请参阅answer here。