我希望以前没有人问过,至少我找不到。我试图排除键列不包含“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)
如何做相反的事情?
我正在使用 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 显示的内容:
我是 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”。
我的问题与此类似。
我还使用泡菜来保存和加载模型。我在 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 版本的情况下解决此问题?
您好,我是 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)
我该怎么做?提前致谢!
我的目标是证明霍纳法则是正确的。为此,我将 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) 有没有人有使用 Pycharm 调试在 AWS EMR 上运行的 Pyspark 的经验?
我找不到任何好的指南或现有的线程来重新分级这个。
我知道如何使用 Intellij 针对 EMR 调试 Scala-Spark,但我没有使用 Python 执行此操作的经验。
我知道能够使用 ssh (EMR Master) 连接到远程服务器,也许使用专业版我可以使用远程部署功能使用 Pycharm 运行我的 Spark 作业,但我不确定它是否可以工作,我想知道是否有人尝试过,在我使用 Pycharm Pro 之前。
我正在尝试将 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 时是否有等效的方法。
我见过很多关于相似性矩阵的堆栈溢出问题,但它们处理 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) apache-spark ×7
pyspark ×7
python ×5
pandas ×2
ada ×1
amazon-emr ×1
databricks ×1
graphframes ×1
hadoop ×1
hierarchy ×1
hive ×1
invariants ×1
matplotlib ×1
mlflow ×1
pickle ×1
proof ×1
pycharm ×1
scikit-learn ×1
spark-ada ×1