繁体   English   中英

将 Apache Spark Scala 重写为 PySpark

[英]Rewriting Apache Spark Scala into PySpark

社区,我不熟悉 Scala,对 PySpark 不太熟悉。 但是,我对 Scala 不太熟悉,因此希望有人能告诉我是否有人可以帮助我将以下 Apache Spark Scala 重写为 PySpark。

如果你要问我到目前为止做了什么来帮助自己,老实说,我会说很少,因为我仍处于编码的早期阶段。

因此,如果您可以帮助将以下内容重新编码到 PySpark 中,或者让我走上正确的道路,以便我自己重新编码,那将非常有帮助

import org.apache.spark.sql.DataFrame

def readParquet(basePath: String): DataFrame = {
  val parquetDf = spark
  .read
  .parquet(basePath)
  return parquetDf
}

def num(df: DataFrame): Int = {
  val numPartitions = df.rdd.getNumPartitions
  return numPartitions
}


def ram(size: Int): Int = {
  val ramMb = size
  return ramMb
}

def target(size: Int): Int = {
  val targetMb = size
  return targetMb
}


def dp(): Int = {
  val defaultParallelism  = spark.sparkContext.defaultParallelism
  return defaultParallelism
}

def files(dp: Int, multiplier: Int, ram: Int, target: Int): Int = {
  val maxPartitions = Math.max(dp * multiplier, Math.ceil(ram / target).toInt)
  return maxPartitions
}


def split(df: DataFrame, max: Int): DataFrame = {
  val repartitionDf = df.repartition(max)
  return repartitionDf
}

def writeParquet(df: DataFrame, targetPath: String) {
  return df.write.format("parquet").mode("overwrite").save(targetPath)
}

import org.apache.spark.sql.SparkSession

val spark = SparkSession.builder().appName("spark-repartition-optimizer-app").getOrCreate()
spark.conf.set("spark.sql.shuffle.partitions", 2001) // example
val parquetDf = readParquet("/blogs/source/airlines.parquet/")
val numPartitions = num(parquetDf)
val ramMb = ram(6510) // approx. df cache size
val targetMb = target(128) // approx. partition size (between 50 and 200 mb)
val defaultParallelism = dp()
val maxPartitions = files(defaultParallelism, 2, ramMb, targetMb)
val repartitionDf = split(parquetDf, maxPartitions)
writeParquet(repartitionDf, "/blogs/optimized/airlines.parquet/")

我只需要自己将 Scala 代码重新编码为 PySpark。

这是通过在 pyspark 中包含以下模块来解决的。

import module

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM