为什么我的pandas数据框无法正确转换为pyspark数据框的列和行?

时间:2019-07-10 07:59:15

标签: python-3.x pyspark pyodbc

我正在尝试从sql服务器读取数据,然后创建pyspark数据框架。

我也尝试为其创建特定的架构,但这也无济于事

from pyspark.sql.types import *

mySchema = StructType([ StructField("CAMP_ID", StringType(), True)\
                       ,StructField("SEG_ID", StringType(), True)\
                       ,StructField("CUST_NAME", StringType(), True)\
                       ,StructField("CUST_CNIC", StringType(), True)\
                       ,StructField("CUST_GENDER", StringType(), True)\
                       ,StructField("CUST_DOB", StringType(), True)\
                       ,StructField("CUST_MOBILE", StringType(), True)\
                       ,StructField("CUST_EMAIL", StringType(), True)\
                       ,StructField("PAN", StringType(), True)\
                       ,StructField("TRAN_DATE", StringType(), True)\
                       ,StructField("TRAN_CURRENCY", StringType(), True)\
                       ,StructField("TRAN_AMOUNT", FloatType(), True)\
                       ,StructField("STAN", StringType(), True)\
                       ,StructField("MERCHANT_CAT_CODE", StringType(), True)\
                       ,StructField("MERCHANT_NAME", StringType(), True)\
                       ,StructField("MERCHANT_TYPE", StringType(), True)\
                       ,StructField("TRAN_LOCATION", StringType(), True)\
                       ,StructField("RESPONSE_NAME", StringType(), True)\
                       ,StructField("CHANNEL_NAME", StringType(), True)\
                       ,StructField("NETWORK_NAME", StringType(), True)\
                       ,StructField("ACCT_STATUS_NAME", StringType(), True)\
                       ,StructField("ACCT_TYPE_NAME", StringType(), True)\
                       ,StructField("card_status", StringType(), True)\
                       ,StructField("product_code", StringType(), True)])

df = spark.createDataFrame(pdf,schema=mySchema)

This is the dataframe I have

this is the result that am getting

1 个答案:

答案 0 :(得分:0)

这是预期的行为。如果要漂亮打印,请尝试:

display(df)

如果只需要前两行,可以尝试类似

df.take(2)

但是它不会很漂亮地打印。