有没有办法优化使用pandas读取TSV文件,转换并使用spark写入表的代码?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

有没有办法优化使用pandas读取TSV文件,转换并使用spark写入表的代码?

2018-12-21 11:02:08 2214 1

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中的数据创建一个permenant表。这就是为什么需要转换为spark数据帧。我还必须将创建的时间戳添加到表中并指定Timestamp数据类型。我不希望它被视为字符串。

然后我需要从表中创建一个pandas数据帧,这样我就可以对数据进行一些简单的转换。应该从现有表中创建pandas数据帧。

现在,这段代码需要2.48分钟才能在数据库中运行。它太多,因为我不使用代码创建新的时间戳列并指定其数据类型,在6秒内完成。

有没有办法优化这段代码?我不知道是否有任何方法可以将pandas数据帧直接保存为表格。因此转换为spark数据帧。我需要在Pandas数据帧本身进行转换。我不知道从表直接创建pandas数据帧的方法。因此先要到spark,然后再到pandas。

有没有办法优化这段代码?

取消 提交回答
全部回答(1)
  • 社区小助手
    2019-07-17 23:23:18

    spark中有两个概念需要先了解:

    转换 - 这意味着创建一个或多个其他RDD的延迟操作。这意味着没有任何实际执行的计划。

    动作 - 产生像toPandas()这样的非RDD结果实际上执行所有转换计划。参考

    关于执行的时间,Spark开始执行任何任务都有很大的开销。但是当它与更大的任务相关时,它会获得更好的性能。有很多情况下spark会比pandas或numpy慢。但是当你到达一个特定的大数据案例时,Spark的执行速度将比任何本地执行都要快。如果你使用像这样的小型数据集的单台机器运行,那么大pandas会更快。Spark需要启动Session,查找节点,序列化数据等。这就是为什么你有这个开销。继续学习并尝试使用100GB或更高的文件来查看性能。

    0 0
相关问答

0

回答

请教一个问题。我在用spark读取hbase数据时,默认是一个regoin一个task。发现有些re

2022-11-09 22:16:05 60浏览量 回答数 0

1

回答

我现在用开源spark读取hive是这样配置的 用EMR 内置的spark想读取hive数据该怎么弄

2022-09-07 14:39:48 135浏览量 回答数 1

1

回答

Spark 读取Maxcompute 中的表进行处理,怎么弄?

2022-08-18 17:42:31 192浏览量 回答数 1

1

回答

Spark 支持读取的数据源都有哪几类?

2022-04-15 12:38:42 439浏览量 回答数 1

13

回答

通过 Spark 读取或写入数据至 Hologres 对版本有什么要求吗?

2022-04-15 12:40:13 6350浏览量 回答数 13

1

回答

Spark使用JindoFS计算加速读取parquet数据的前提是什么?

2021-12-09 21:14:30 215浏览量 回答数 1

1

回答

Spark程序中使用SQL语句读取ORC文件的方法是什么?

2021-12-09 20:17:07 180浏览量 回答数 1

1

回答

如何实现Spark Streaming读取flume中的数据?

2021-12-06 01:01:16 165浏览量 回答数 1

1

回答

flink可以像spark一样正则读取hdfs目录下的文件吗?

2021-12-04 19:25:07 234浏览量 回答数 1

0

回答

spark 读取ssl的rds

2021-11-08 18:32:16 229浏览量 回答数 0
+关注
社区小助手
社区小助手是spark中国社区的管理员,我会定期更新直播回顾等资料和文章干货,还整合了大家在钉群提出的有关spark的问题及回答。
文章
问答
问答排行榜
最热
最新
相关电子书
更多
spark替代HIVE实现ETL作业
立即下载
Comparison of Spark SQL with Hive
立即下载
Spark + Parquet in Depth
立即下载