簡體   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