spark hivecontext在使用sql方法的操作中应用

daolsyd0  于 2021-06-24  发布在  Hive
关注(0)|答案(2)|浏览(412)

我有一个列名为department city的employee配置单元表,我想根据hivecontext.sql()函数中使用in operation的雇员的姓名检索数据,但它引发了pyspark.analysis异常。请看下面的示例。
员工表:

Name   Department  City
Ram     FDE        Mumbai
Ramesh  CTZ        Pune
Suraj   FDE        Chennai
Varun   CTZ        Delhi

查询:

SELECT * from employee WHERE Name in ('Ramesh' , 'Varun')

spark程序的代码段:

namesList= ['Ramesh' , 'Varun']
data = HiveContext.sql('SELECT * from employee WHERE Name in ({namesList})'.format(namesList = namesList))

我试图修改并传递字符串而不是list,但错误仍然是一样的

Error:pyspark.AnalysisException : structType field

如果我在这里做错了什么,请帮我一个忙,并提出建议。

xdyibdwo

xdyibdwo1#

在创建查询时,应该去掉python列表中的方括号- str(namesList)[1:-1] ```
data = HiveContext.sql('SELECT * from employee WHERE Name in ({namesList})'.format(namesList = str(namesList)[1:-1]))

smtd7mpg

smtd7mpg2#

替换此

data = HiveContext.sql('SELECT * from employee WHERE Name in ({namesList})'.format(namesList = namesList))

用这个

data = HiveContext.sql("SELECT * from employee WHERE Name in ({namesList})".format(namesList = "'"+"','".join(namesList)+"'"))

你需要传递字符串而不是列表。

相关问题