Python Pyspark |从数据帧中分离字符串/int值
我有一个Spark数据框,如下所示:Python Pyspark |从数据帧中分离字符串/int值,python,pyspark,apache-spark-sql,Python,Pyspark,Apache Spark Sql,我有一个Spark数据框,如下所示: +---------+ |col_str_1| +---------+ | 1| | 2| | 3| | 4| | 5| | 6| | 7| | 8| | 9| | a| | b| | c| | d| | e| | f| | g| | h| | 1| | 2| | 3.0| +---------+ 我想
+---------+
|col_str_1|
+---------+
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
| a|
| b|
| c|
| d|
| e|
| f|
| g|
| h|
| 1|
| 2|
| 3.0|
+---------+
我想根据请求分离string/int/float值
例如:
Req用于字符串,返回的DF必须如下所示
+---------+
|col_str_1|
+---------+
| a|
| b|
| c|
| d|
| e|
| f|
| g|
| h|
+---------+
+---------+
|col_str_1|
+---------+
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
| 1|
| 2|
+---------+
Req表示整数,返回的DF必须如下所示
+---------+
|col_str_1|
+---------+
| a|
| b|
| c|
| d|
| e|
| f|
| g|
| h|
+---------+
+---------+
|col_str_1|
+---------+
| 1|
| 2|
| 3|
| 4|
| 5|
| 6|
| 7|
| 8|
| 9|
| 1|
| 2|
+---------+
尝试以下步骤:
>> df = sqlContext.sql('select * from --db--.vt_prof_test')
>> columns = df.columns[0]
>> df.select(columns).????
如何进一步操作,使用过滤器或映射,有人能帮我吗???你可以选择
udf
import pyspark.sql.functions as F
df = sqlContext.sql('select * from --db--.vt_prof_test')
REQUEST = 'STRING'
request_bc = sc.broadcast(REQUEST)
def check_value(val):
if request_bc.value == 'STRING':
try:
val = int(val)
return None
except:
return val
if request_bc.value == 'INTEGER':
try:
val = int(val)
return val
except:
return None
check_udf = F.udf(lambda x: check_value(x))
df = df.select(check_udf(F.col('col_str_1').alias('col_str_1')).dropna()
根据需要设置
请求
参数。谢谢Mayank,这节省了我的时间