not null在使用impala jdbc驱动程序时不在pyspark中工作

hfsqlsce  于 2021-07-09  发布在  Spark
关注(0)|答案(1)|浏览(422)

我是Pypark的新手。我使用的是impalajdbc驱动程序impalajdbc41.jar。在我的pyspark代码中,我使用下面的。

df =  spark.read \
      .format("jdbc") \
      .option("url", "jdbc:impala://<instance>:21051") \
      .option("query", "select dst_val,node_name,trunc(starttime,'SS') as starttime from def.tbl_dst where node_name is not null and trunc(starttime,'HH') >= trunc(hours_add(now(),-1),'HH') and trunc(starttime,'HH') < trunc(now(),'HH')") \
      .option("user", "") \
      .option("password", "") \
      .load()

但上述操作不起作用,“node_name is not null”也不起作用。而且trunc(starttime,'ss')也不工作。任何帮助都将不胜感激。

sample input data :

dst_val,node_name,starttime
BCD098,,2021-03-26 15:42:06.890000000
BCD043,HKR_NODEF,2021-03-26 20:31:09
BCD038,BCF_NODEK,2021-03-26 21:29:10

Expected output :

dst_val,node_name,starttime
BCD043,HKR_NODEF,2021-03-26 20:31:09
BCD038,BCF_NODEK,2021-03-26 21:29:10

为了调试,我试着打印df.show。但没用。我正在使用df.show(),但它仍然显示空的记录。节点名称的数据类型为“string”

ozxc1zmp

ozxc1zmp1#

你能用这个吗?

select dst_val,node_name,cast( from_timestamp(starttime,'SSS') as bigint) as starttime from def.tbl_dst where (node_name is not null or node_name<>'' ) and trunc(starttime,'HH') >= trunc(hours_add(now(),-1),'HH') and trunc(starttime,'HH') < trunc(now(),'HH')

我想 node_name 在sql上面有空的空间(我加了 or node_name<>'' )我会处理的。
现在,如果您有一些不可打印的字符,那么我们可能需要进行相应的检查。
编辑:由于notnull在 Impala 中工作,我认为这可能是一个Spark问题。

相关问题