Apache spark 使用impala jdbc驱动程序时不在Pyspark中工作

Apache spark 使用impala jdbc驱动程序时不在Pyspark中工作,apache-spark,hadoop,pyspark,apache-spark-sql,impala,Apache Spark,Hadoop,Pyspark,Apache Spark Sql,Impala,我是Pyspark的新手。我正在使用Impala JDBC驱动程序ImpalaJDBC41.jar。在我的pyspark代码中,我使用以下命令 df = spark.read \ .format("jdbc") \ .option("url", "jdbc:impala://<instance>:21051") \ .option("query", "sel

我是Pyspark的新手。我正在使用Impala JDBC驱动程序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()
为了调试,我正在尝试打印df.show。但是没有用。
我正在使用df.show(),但它仍然显示带有null的记录。节点名称的数据类型为“STRING”

您能使用它吗

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')
从def.tbl\u dst中选择dst\u val、node\u name、cast(从时间戳(starttime,'SSS')作为bigint)作为starttime,其中(node\u name不为null或node\u name“”)和trunc(starttime,'HH')>=trunc(hours\u add(now(),-1)、'HH')和trunc(starttime,'HH')
我认为
node\u name
中有空格,上面的sql(我添加了
或node\u name“”
)将处理它。
现在,如果您有一些不可打印的字符,那么我们可能需要进行相应的检查


编辑:由于not null在黑斑羚中工作,我认为这可能是一个火花问题。

我累了。它不起作用。这些是实际的空值。如果您从配置单元命令提示符/shell运行它,您会得到数据吗?如果我以直接impala查询的方式运行它,“not null”可以工作,但是带有毫秒的时间戳仍然会丢失
转换(从时间戳(starttime,'SSS')转换为bigint)
-这将给您毫秒。
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')