Apache spark 如何将表数据加载到DataRicks中的数据帧中?一排还是一堆?

Apache spark 如何将表数据加载到DataRicks中的数据帧中?一排还是一堆?,apache-spark,databricks,pyspark-dataframes,Apache Spark,Databricks,Pyspark Dataframes,我不熟悉DataRicks笔记本和数据帧。我有一个需求,即在一个包含1400万条记录的表中,将几个列(从许多列中)加载到一个数据帧中。加载表后,我需要根据两列中的值创建一个新列 我想在将表加载到dataframe时,将新列的逻辑与select命令一起写入。 例: 它会对性能产生影响吗?是否最好先将少数列的表加载到df中,然后对加载的df执行列操作 表数据是一次全部加载还是逐行加载到df中?如果是逐行,那么通过在读取表时包含列操作逻辑,我是否会导致性能下降 提前谢谢 这实际上取决于表的基本格式-它

我不熟悉DataRicks笔记本和数据帧。我有一个需求,即在一个包含1400万条记录的表中,将几个列(从许多列中)加载到一个数据帧中。加载表后,我需要根据两列中的值创建一个新列

我想在将表加载到dataframe时,将新列的逻辑与select命令一起写入。 例:

它会对性能产生影响吗?是否最好先将少数列的表加载到df中,然后对加载的df执行列操作

表数据是一次全部加载还是逐行加载到df中?如果是逐行,那么通过在读取表时包含列操作逻辑,我是否会导致性能下降


提前谢谢

这实际上取决于表的基本格式-它是由拼花或增量支持的,还是实际数据库的接口等。一般来说,Spark尝试只读取必要的数据,例如,如果使用拼花(或增量),则更容易,因为它是面向列的文件格式,因此,每列的数据都放在一起

关于阅读问题,默认情况下-Spark是惰性的,因此,即使您将
df=Spark.read.table(..)
作为单独的变量,然后添加
。选择
,然后添加
。withColumn
,它也不会执行任何操作,直到您调用某些操作,例如
。count
,或写入结果。在此之前,Spark将只检查表是否存在,操作是否正确等。您可以随时调用
。对生成的数据帧解释
,查看Spark将如何执行操作

P.S.S.我建议抓取由数据库提供的免费副本,它将为Snc/DabrICKS

代码的开发提供基础。
df =  spark.read.table(tableName)
          .select(columnsList)
          .withColumn('newColumnName', 'logic')