Python Pyspark |从数据帧中分离字符串/int值

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| +---------+ 我想

我有一个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|
+---------+
我想根据请求分离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,这节省了我的时间