小编mck*_*mck的帖子

如果列不包含字符串,Pyspark 过滤数据框

我希望以前没有人问过,至少我找不到。我试图排除键列不包含“sd”值的行。下面是它包含时的工作示例。

values = [("sd123","2"),("kd123","1")] 
columns = ['Key', 'V1']
df2 = spark.createDataFrame(values, columns)

df2.where(F.col('Key').contains('sd')).show()
Run Code Online (Sandbox Code Playgroud)

如何做相反的事情?

python apache-spark apache-spark-sql pyspark

17
推荐指数
1
解决办法
3万
查看次数

将 Matlabplot 保存为 MLFlow 工件

我正在使用 DataBricks 和 Spark 7.4ML,

以下代码成功记录了参数和指标,我可以在 MLFLOW gui 中看到 ROCcurve.png(只是模型下方树中的项目)。但实际上剧情是空白的。为什么?

with mlflow.start_run(run_name="logistic-regression") as run:
  pipeModel = pipe.fit(trainDF)
  mlflow.spark.log_model(pipeModel, "model")
  predTest = pipeModel.transform(testDF)
  predTrain = pipeModel.transform(trainDF)
  evaluator=BinaryClassificationEvaluator(labelCol="arrivedLate")
  trainROC = evaluator.evaluate(predTrain)
  testROC = evaluator.evaluate(predTest)
  print(f"Train ROC: {trainROC}")
  print(f"Test ROC: {testROC}")
  mlflow.log_param("Dataset Name", "Flights " + datasetName)
  mlflow.log_metric(key="Train ROC", value=trainROC)
  mlflow.log_metric(key="Test ROC", value=testROC)

  lrModel = pipeModel.stages[3]
  trainingSummary = lrModel.summary
  roc = trainingSummary.roc.toPandas()
  plt.plot(roc['FPR'],roc['TPR'])
  plt.ylabel('False Positive Rate')
  plt.xlabel('True Positive Rate')
  plt.title('ROC Curve')
  plt.show()
  plt.savefig("ROCcurve.png")
  mlflow.log_artifact("ROCcurve.png")
  plt.close()
  
  display(predTest.select(stringCols + ["arrivedLate", "prediction"]))
Run Code Online (Sandbox Code Playgroud)

笔记本显示的内容:

在此输入图像描述

MLFlow 显示的内容:

在此输入图像描述

matplotlib apache-spark pyspark databricks mlflow

12
推荐指数
2
解决办法
2万
查看次数

使用 Pyspark 从关系数据集构建层次结构

我是 Python 新手,一直致力于从关系数据集构建层次结构。
如果有人知道如何进行此操作,那将有巨大的帮助。

我有一个关系数据集,其中包含如下数据

_currentnode,  childnode_  
 root,         child1  
 child1,       leaf2  
 child1,       child3  
 child1,       leaf4  
 child3,       leaf5  
 child3,       leaf6  
Run Code Online (Sandbox Code Playgroud)

很快。我正在寻找一些 python 或 pyspark 代码来
构建如下所示的层次结构数据框

_level1, level2,  level3,  level4_  
root,    child1,  leaf2,   null  
root,    child1,  child3,  leaf5  
root,    child1,  child3,  leaf6  
root,    child1,  leaf4,   null  
Run Code Online (Sandbox Code Playgroud)

这些数据是字母数字,是一个巨大的数据集[约 5000 万条记录]。
此外,层次结构的根是已知的,并且可以在代码中硬连线。
因此,在上面的示例中,层次结构的根是“root”。

python hierarchy apache-spark pyspark graphframes

9
推荐指数
1
解决办法
4999
查看次数

ModuleNotFoundError:没有名为“sklearn.preprocessing._data”的模块

我的问题与类似。

我还使用泡菜来保存和加载模型。我在 pickle.load() 期间遇到以下错误

from sklearn.preprocessing import StandardScaler
# SAVE
scaler = StandardScaler().fit(X_train)
X_trainScale = scaler.transform(X_train)
pickle.dump(scaler, open('scaler.scl','wb'))

# =================
# LOAD
sclr = pickle.load(open('scaler.scl','rb'))  # => ModuleNotFoundError: No module named 'sklearn.preprocessing._data'
X_testScale = sclr.transform(X_test)
Run Code Online (Sandbox Code Playgroud)

ModuleNotFoundError:没有名为“sklearn.preprocessing._data”的模块

看起来像是 sklearn 版本问题。我的 sklearn 版本是 0.20.3,Python 版本是 3.7.3。

但我在 Anaconda .zip 文件中使用 Python。是否可以在更新 sklearn 版本的情况下解决此问题?

python pickle scikit-learn

8
推荐指数
1
解决办法
2万
查看次数

将 pyspark 数据帧转换为 python 字典列表

您好,我是 pyspark 的新手,我正在尝试将 pyspark.sql.dataframe 转换为字典列表。

下面是我的数据框,类型是 <class 'pyspark.sql.dataframe.DataFrame'>:

+------------------+----------+------------------------+
|             title|imdb_score|Worldwide_Gross(dollars)|
+------------------+----------+------------------------+
| The Eight Hundred|       7.2|               460699653|
| Bad Boys for Life|       6.6|               426505244|
|             Tenet|       7.8|               334000000|
|Sonic the Hedgehog|       6.5|               308439401|
|          Dolittle|       5.6|               245229088|
+------------------+----------+------------------------+
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

[{"title":"The Eight Hundred", "imdb_score":7.2, "Worldwide_Gross(dollars)":460699653},
 {"title":"Bad Boys for Life", "imdb_score":6.6, "Worldwide_Gross(dollars)":426505244},
 {"title":"Tenet", "imdb_score":7.8, "Worldwide_Gross(dollars)":334000000},
 {"title":"Sonic the Hedgehog", "imdb_score":6.5, "Worldwide_Gross(dollars)":308439401},
 {"title":"Dolittle", "imdb_score":5.6, "Worldwide_Gross(dollars)":245229088}]
Run Code Online (Sandbox Code Playgroud)

我该怎么做?提前致谢!

python apache-spark pyspark

8
推荐指数
1
解决办法
5284
查看次数

如何证明这个不变量?

我的目标是证明霍纳法则是正确的。为此,我将 Horner 当前计算的值与“实数”多项式的值进行比较。
所以我做了这段代码:

package body Poly with SPARK_Mode is
   function Horner (X : Integer; A : Vector) return Integer is
      Y : Integer := 0;
      Z : Integer := 0 with Ghost;
   begin
      for I in reverse A'First .. A'Last loop
         pragma Loop_Invariant (Y * (X ** (I - A'First + 1)) = Z);
         Y := A(I) + Y * X;
         Z := Z + A(I) * (X ** (I - A'First));
      end loop;
      pragma Assert (Y = Z); …
Run Code Online (Sandbox Code Playgroud)

proof ada invariants proof-of-correctness spark-ada

8
推荐指数
1
解决办法
247
查看次数

如何使用 .hql 文件执行 HQL 命令

我是 Hive 新手,想知道如何直接从 .hql 文件执行 hive 命令。

hadoop hive

7
推荐指数
1
解决办法
3万
查看次数

使用 Pycharm 在 EMR 上调试 Pyspark

有没有人有使用 Pycharm 调试在 AWS EMR 上运行的 Pyspark 的经验?

我找不到任何好的指南或现有的线程来重新分级这个。

我知道如何使用 Intellij 针对 EMR 调试 Scala-Spark,但我没有使用 Python 执行此操作的经验。

我知道能够使用 ssh (EMR Master) 连接到远程服务器,也许使用专业版我可以使用远程部署功能使用 Pycharm 运行我的 Spark 作业,但我不确定它是否可以工作,我想知道是否有人尝试过,在我使用 Pycharm Pro 之前。

amazon-web-services pycharm amazon-emr apache-spark pyspark

6
推荐指数
1
解决办法
259
查看次数

Pyspark toPandas() 越界纳秒时间戳错误

我正在尝试将 Spark DataFrame 转换为 Pandas。但是,它给出以下错误:

OutOfBoundsDatetime: Out of bounds nanosecond timestamp:

有解决办法吗?

如果我删除所有时间戳列,它会起作用,但我想将整个表放入 Pandas 中。

将 Spark DataFrame 引入 Pandas 时,我从未遇到过错误。

这是一个相当大的表,包含多个时间戳列。有些是YYYY-MM-DD,有些是YYYY-MM-DD 00:00:00类型列。

有多个列包含不存在的年份变量,数量未知。

下面是一个例子。

data = {
    "ID": ["AB", "CD", "DE", "EF"],
    "year": [2016, 2017, 2018, 2018],
    "time_var_1": [
        "3924-01-04 00:00:00",
        "4004-12-12 12:38:00",
        "2018-10-02 01:32:23",
        "2018-04-05 00:00:00",
    ],
}

df = pd.DataFrame(data)

sdf = spark.createDataFrame(df)

sdf = sdf.withColumn("time_var_1", spark_fns.to_timestamp(spark_fns.col("time_var_1")))

Run Code Online (Sandbox Code Playgroud)

我对 PySpark 不太熟悉,所以我不确定errors='coerce'将表从 Spark DataFrame 导入 Pandas 时是否有等效的方法。

pandas apache-spark apache-spark-sql pyspark

6
推荐指数
1
解决办法
4969
查看次数

如何在 Pyspark 中标准化和创建相似度矩阵?

我见过很多关于相似性矩阵的堆栈溢出问题,但它们处理 RDD 或其他情况,我找不到我的问题的直接答案,我决定发布一个新问题。

问题

import numpy as np
import pandas as pd
import pyspark
from pyspark.sql import functions as F, Window
from pyspark import SparkConf, SparkContext, SQLContext
from pyspark.ml.feature import VectorAssembler
from pyspark.ml.feature import StandardScaler,Normalizer
from pyspark.mllib.linalg.distributed import IndexedRow, IndexedRowMatrix

spark = pyspark.sql.SparkSession.builder.appName('app').getOrCreate()
sc = spark.sparkContext
sqlContext = SQLContext(sc)

# pandas dataframe
pdf = pd.DataFrame({'user_id': ['user_0','user_1','user_2'],
                   'apple': [0,1,5],
                   'good banana': [3,0,1],
                   'carrot': [1,2,2]})
# spark dataframe
df = sqlContext.createDataFrame(pdf)
df.show()

+-------+-----+-----------+------+
|user_id|apple|good banana|carrot|
+-------+-----+-----------+------+
| user_0|    0|          3|     1|
| …
Run Code Online (Sandbox Code Playgroud)

python pandas apache-spark apache-spark-sql pyspark

6
推荐指数
1
解决办法
253
查看次数