【问题标题】:How to pass where clause as variable to the query in Spark SQL?如何将 where 子句作为变量传递给 Spark SQL 中的查询?
【发布时间】:2016-08-09 23:14:13
【问题描述】:

样本表:

    +---------------------------------------------------------++------+
    |                  Name_Age                               ||  ID  | 
    +---------------------------------------------------------++------+
    |"SUBHAJIT SEN":28,"BINOY MONDAL":26,"SHANTANU DUTTA":35  ||  15  |
    |"GOBINATHAN SP":35,"HARSH GUPTA":27,"RAHUL ANAND":26     ||  16  |
    +---------------------------------------------------------++------+

如何将WHERE 子句作为变量传递给查询?

我想要的查询是:Select Name_Age from table where ID=15 所以其中变量 ID=15。

【问题讨论】:

    标签: scala apache-spark dataframe hive apache-spark-sql


    【解决方案1】:

    下面的代码可以给你答案:

    spark.sql("""Select Name_Age from table where ID='15'""")
    

    【讨论】:

      【解决方案2】:

      如果数据已经注册为表(Hive 表或在DataFrame 上调用registerTempTable 之后),则可以使用SQLContext.sql

      val whereClause: String = "ID=15"
      sqlContext.sql("Select Name_Age from table where " + whereClause)
      

      如果您有要查询的df: DataFrame 对象:

      // using a string filter:
      df.filter(whereClause).select("Name_Age")
      

      【讨论】:

      • 首先 - 然后在你的问题中明确 - 给出一个示例输入!哪个部分应该是传递的值 - “15”? “ID=15”?
      • 两者,例如列; “ID”及其值,例如; “15”
      • 无论哪种方式 - 如您所见,您可以使用您拥有的任何变量构造 SQL 字符串并将其传递给 sqlContext.sql - 有什么不清楚的地方?也许将您的代码添加到问题中......
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      相关资源
      最近更新 更多