关于sparksql 接参数的错误,大佬来看看啊

toward_south 2019-07-01 09:56:27
今天写spark sql的时候

String sex = "F";
//创建临时视图
sparkSession.read().jdbc(url, "user", properties).createOrReplaceTempView("user");
Dataset<Row> user = sparkSession.sql("select id,UserID,Gender,Age from user where Gender = " +sex);


想在 这条语句后面加个参数,但是发现 这个 sex 一直编译失败


21:43:01.340 [main] INFO org.apache.spark.sql.execution.streaming.state.StateStoreCoordinatorRef - Registered StateStoreCoordinator endpoint
21:43:03.844 [main] DEBUG org.apache.spark.sql.execution.SparkSqlParser - Parsing command: user
21:43:04.362 [main] DEBUG org.apache.spark.sql.execution.SparkSqlParser - Parsing command: select id,UserID,Gender,Age from user where Gender = F
21:43:04.877 [main] DEBUG org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences - Resolving 'Gender to Gender#2
21:43:04.879 [main] DEBUG org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences - Resolving 'F to 'F
21:43:04.913 [main] DEBUG org.apache.spark.sql.catalyst.analysis.Analyzer$ResolveReferences - Resolving 'F to 'F



Exception in thread "main" org.apache.spark.sql.AnalysisException: cannot resolve '`F`' given input columns: [user.zipcode, user.Gender, user.Age, user.Occupation, user.UserID, user.id]; line 1 pos 53;
'Project ['id, 'UserID, 'Gender, 'Age]
+- 'Filter (Gender#2 = 'F)
+- SubqueryAlias `user`
+- Relation[id#0,UserID#1,Gender#2,Age#3,Occupation#4,zipcode#5] JDBCRelation(user) [numPartitions=1]



也就是说这个sex值能传进去,但是sql语句却编译失败,我个人猜想是少了那个双引号,但是怎么把双引号也拼接进去呢,或者有其他的解决办法,希望大牛能帮帮忙
...全文
344 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
心怀啊 2019-07-02
  • 打赏
  • 举报
回复
反斜杠加单引号或者双引号
zijiang001 2019-07-02
  • 打赏
  • 举报
回复
where Gender = '" +sex + "'"); 字符串类型需要加上''

50,530

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧