过滤掉 hivecontext.sql 中的空字符串和空字符串
Filter out null strings and empty strings in hivecontext.sql
我正在使用 pyspark 和 hivecontext.sql,我想从我的数据中过滤掉所有 null 和空值。
所以我使用简单的 sql 命令首先过滤掉空值,但它不起作用。
我的代码:
hiveContext.sql("select column1 from table where column2 is not null")
但它在没有表达式 "where column2 is not null"
的情况下工作
错误:
Py4JavaError: An error occurred while calling o577.showString
我想是因为我的select错了。
数据示例:
column 1 | column 2
null | 1
null | 2
1 | 3
2 | 4
null | 2
3 | 8
Objective:
column 1 | column 2
1 | 3
2 | 4
3 | 8
感谢
我们无法将 Hive table 名称直接传递给 Hive 上下文 sql 方法,因为它不理解 Hive table 名称。阅读 Hive table 的一种方法是使用 pysaprk shell.
我们需要注册我们从配置单元读取得到的数据框table。然后我们可以运行SQL查询。
您必须为 database_name.table 和 运行 提供相同的查询才能正常工作。如果有帮助请告诉我
Have you entered null values manually?
If yes then it will treat those as normal strings,
I tried following two use cases
dbname.person table in hive
name age
aaa null // this null is entered manually -case 1
Andy 30
Justin 19
okay NULL // this null came as this field was left blank. case 2
---------------------------------
hiveContext.sql("select * from dbname.person").show();
+------+----+
| name| age|
+------+----+
| aaa |null|
| Andy| 30|
|Justin| 19|
| okay|null|
+------+----+
-----------------------------
case 2
hiveContext.sql("select * from dbname.person where age is not null").show();
+------+----+
| name|age |
+------+----+
| aaa |null|
| Andy| 30 |
|Justin| 19 |
+------+----+
------------------------------------
case 1
hiveContext.sql("select * from dbname.person where age!= 'null'").show();
+------+----+
| name| age|
+------+----+
| Andy| 30|
|Justin| 19|
| okay|null|
+------+----+
------------------------------------
我希望以上用例能消除您对过滤空值的疑虑
出去。
如果您要查询在 spark 中注册的 table,则使用 sqlContext。
对我有用:
df.na.drop(subset=["column1"])
我正在使用 pyspark 和 hivecontext.sql,我想从我的数据中过滤掉所有 null 和空值。
所以我使用简单的 sql 命令首先过滤掉空值,但它不起作用。
我的代码:
hiveContext.sql("select column1 from table where column2 is not null")
但它在没有表达式 "where column2 is not null"
的情况下工作错误:
Py4JavaError: An error occurred while calling o577.showString
我想是因为我的select错了。
数据示例:
column 1 | column 2
null | 1
null | 2
1 | 3
2 | 4
null | 2
3 | 8
Objective:
column 1 | column 2
1 | 3
2 | 4
3 | 8
感谢
我们无法将 Hive table 名称直接传递给 Hive 上下文 sql 方法,因为它不理解 Hive table 名称。阅读 Hive table 的一种方法是使用 pysaprk shell.
我们需要注册我们从配置单元读取得到的数据框table。然后我们可以运行SQL查询。
您必须为 database_name.table 和 运行 提供相同的查询才能正常工作。如果有帮助请告诉我
Have you entered null values manually?
If yes then it will treat those as normal strings,
I tried following two use cases
dbname.person table in hive
name age
aaa null // this null is entered manually -case 1
Andy 30
Justin 19
okay NULL // this null came as this field was left blank. case 2
---------------------------------
hiveContext.sql("select * from dbname.person").show();
+------+----+
| name| age|
+------+----+
| aaa |null|
| Andy| 30|
|Justin| 19|
| okay|null|
+------+----+
-----------------------------
case 2
hiveContext.sql("select * from dbname.person where age is not null").show();
+------+----+
| name|age |
+------+----+
| aaa |null|
| Andy| 30 |
|Justin| 19 |
+------+----+
------------------------------------
case 1
hiveContext.sql("select * from dbname.person where age!= 'null'").show();
+------+----+
| name| age|
+------+----+
| Andy| 30|
|Justin| 19|
| okay|null|
+------+----+
------------------------------------
我希望以上用例能消除您对过滤空值的疑虑 出去。 如果您要查询在 spark 中注册的 table,则使用 sqlContext。
对我有用:
df.na.drop(subset=["column1"])