df_pandas = pd.read_csv('filepath/filename' , delimiter='\t' , encoding = 'utf-8', error_bad_lines=False )
#defining the schema for the spark dataframe
df_schema_file = StructType([StructField("Col1", StringType(), True),StructField("Col2", StringType(), True)])
spark_df = spark.createDataFrame(df_pandas,df_schema_file)
spark_df = spark_df.withColumn("CreatedOn", lit(from_unixtime(unix_timestamp())))
spark_df = spark_df.withColumn("CreatedOn", spark_df["CreatedOn"].cast(TimestampType()))
spark_df.write.mode('append').saveAsTable('tbl_name')
#Creating dataframe from existing table
spark_df = spark.table('tbl_name')
df_name = spark_df.toPandas()
我正在使用上面的代码读取 TSV 文件,使用 Databricks 中的数据创建一个永久表。这就是为什么需要转换为 spark 数据帧的原因。我还必须将创建的时间戳添加到表中并指定 Timestamp 数据类型。我不希望它被当作字符串。
然后我需要从表中创建一个 pandas 数据框,这样我就可以对数据进行一些简单的转换。pandas 数据框应由现有表制成。
现在,这段代码在数据块中运行需要 2.48 分钟。当我不使用代码创建新的时间戳列并指定其数据类型时,它过去在 6 秒内完成,这太过分了。
有没有办法优化这段代码?我不知道是否有任何方法可以将 pandas 数据框直接保存为表格。因此转换为火花数据帧。我需要在 Pandas 数据框本身中进行转换。而且我不知道有任何方法可以直接从表中创建熊猫数据框。因此首先要激发,然后是熊猫。
有没有办法优化这段代码?