Python环境下两行Spark DataFrame操作代码的等效SparkSQL语句查询
等效SparkSQL语句转换及说明
没问题,我帮你把这两行Spark DataFrame代码转换成对应的SparkSQL语句,同时拆解下逻辑对应关系:
1. 过滤后统计行数的等效SQL
原DataFrame代码是筛选出col_name(小写列名)值以9位数字结尾的行,然后统计总数。
首先需要先将你的spark_df注册为临时视图(SparkSQL操作表需要这一步):
CREATE OR REPLACE TEMP VIEW temp_spark_df AS SELECT * FROM spark_df;
然后执行统计查询:
SELECT COUNT(*) FROM temp_spark_df WHERE col_name RLIKE '[0-9]{9}$';
注:如果你的原始列名是大小写混合的(比如
Col_Name),需要用反引号包裹列名来匹配小写引用,比如WHEREcol_nameRLIKE '[0-9]{9}$'。
2. 转换列类型为日期的等效SQL
原DataFrame代码是将columnname列的字符串值(格式为yyyyMMdd)转换为日期类型,并用转换后的值覆盖原列(或新增同名列)。
如果之前已经注册过临时视图,直接执行以下语句即可覆盖原视图的内容:
CREATE OR REPLACE TEMP VIEW spark_df AS SELECT *, TO_DATE(columnname, 'yyyyMMdd') AS columnname FROM spark_df;
注:如果只是想生成转换后的结果而不覆盖原视图,直接执行
SELECT *, TO_DATE(columnname, 'yyyyMMdd') AS columnname FROM spark_df;即可,后续可基于这个结果创建新视图或直接使用。
内容的提问来源于stack exchange,提问作者amine jisung
相关产品推荐
相关产品推荐

