小编Geo*_*eRF的帖子

当数据在本地模式下不适合RAM时,如何设置Apache Spark使用本地硬盘?

我有50 GB的数据集,它不适合我的工作计算机的8 GB RAM,但它有1 TB的本地硬盘.

官方文档中的以下链接提到,如果数据不适合内存,Spark可以使用本地硬盘.

http://spark.apache.org/docs/latest/hardware-provisioning.html

本地磁盘

虽然Spark可以在内存中执行大量计算,但它仍然使用本地磁盘来存储不适合RAM的数据,以及保持各阶段之间的中间输出.

对我来说,计算时间并不是一个优先事项,但由于缺少备用选项,将数据装入单个计算机的RAM /硬盘进行处理更为重要.

注意:我正在寻找一个包括以下项目的解决方案

  1. 增加RAM
  2. 采样和减少数据大小
  3. 使用云计算或群集计算机

我的最终目标是使用Spark MLLIB来构建机器学习模型.我正在寻找真实,实用的解决方案,人们成功地使用Spark来处理单个计算机中独立/本地模式下不适合RAM的数据.有没有成功完成这项工作而没有重大限制

问题

  1. SAS具有类似的核外处理能力,使用它可以同时使用RAM和本地硬盘进行模型构建等.当数据超过RAM大小时,Spark可以以相同的方式工作吗?

  2. SAS将完整的数据集写入".sas7bdat"格式的硬盘,Spark可以执行与硬盘类似的持久性操作吗?

  3. 如果可以,为此目的如何安装和配置Spark?

hadoop machine-learning sas bigdata apache-spark

5
推荐指数
1
解决办法
2989
查看次数

如何在PySpark中使用公共密钥加入/合并数据帧列表?

df1
     uid1  var1
0  John         3
1  Paul         4
2  George       5
Run Code Online (Sandbox Code Playgroud)
df2
     uid1  var2
0  John         23
1  Paul         44
2  George       52
Run Code Online (Sandbox Code Playgroud)
df3
     uid1  var3
0  John         31
1  Paul         45
2  George       53
Run Code Online (Sandbox Code Playgroud)
df_lst=[df1,df2,df3]
Run Code Online (Sandbox Code Playgroud)

如何基于公共密钥uid1合并/加入列表中的3个数据帧?

编辑:预期输出

   df1
     uid1  var1     var2    var3
0  John         3        23      31
1  Paul         4        44      45
2  George       5        52      53
Run Code Online (Sandbox Code Playgroud)

python apache-spark apache-spark-sql pyspark

5
推荐指数
1
解决办法
9373
查看次数

如何在没有 UDF 的 Spark 数据帧上实现“else if”?

下面的链接解释了如何在 Spark 中实现 IF ELSE。

如何在 pyspark.sql.funtions.when() 中使用多个条件?

如果我的火花数据框看起来像这样

A  B  C
10 2 300
20 3 200
30 7 500
20 1 700
Run Code Online (Sandbox Code Playgroud)

但是我如何在火花中实现包含 ELSE IF 的以下逻辑。

If A>=20:
    flag = 1
elif B> 4
    flag = 2
elif C>500
    flag = 3
elif (1<A<20 & B<2)
    flag = 4
elif (1<A<20 & C<300)
    flag = 5
elif (100<C<400 & B>6)
    flag = 6
else flag = 0
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 我想要一个直接在 Spark 数据帧上的解决方案,而不需要对 RDD 或 UDF 进行操作。
  • 对于正常的 IF else …

apache-spark apache-spark-sql pyspark spark-dataframe apache-spark-mllib

5
推荐指数
0
解决办法
1702
查看次数

如何使用hyperopt进行Keras深度学习网络的超参数优化?

我想用keras建立一个非线性回归模型来预测+ ve连续变量.对于以下模型,如何选择以下超参数?

  1. 隐藏层和神经元的数量
  2. 辍学率
  3. 是否使用BatchNormalization
  4. 激活功能超出线性,relu,tanh,sigmoid
  5. 在adam,rmsprog,sgd中使用的最佳优化器

def dnn_reg():
    model = Sequential()
    #layer 1
    model.add(Dense(40, input_dim=13, kernel_initializer='normal'))
    model.add(Activation('tanh'))
    model.add(Dropout(0.2))
    #layer 2
    model.add(Dense(30, kernel_initializer='normal'))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(Dropout(0.4))
    #layer 3
    model.add(Dense(5, kernel_initializer='normal'))
    model.add(BatchNormalization())
    model.add(Activation('relu'))
    model.add(Dropout(0.4))

    model.add(Dense(1, kernel_initializer='normal'))
    model.add(Activation('relu'))
    # Compile model
    model.compile(loss='mean_squared_error', optimizer='adam')
    return model
Run Code Online (Sandbox Code Playgroud)

我考虑过随机网格搜索,但我想使用hyperopt,我相信会更快.我最初使用https://github.com/maxpumperla/hyperas实现了调优.Hyperas不使用最新版本的keras.我怀疑keras正在快速发展,维护者很难使其兼容.所以我认为直接使用hyperopt将是一个更好的选择.

PS:我是超级参数调优和hyperopt的贝叶斯优化新手.

python optimization deep-learning hyperparameters keras

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

如何在 Pandas 0.21+ 中对多列进行 groupby() 聚合并重命名多索引?

代码

import pandas as pd
df = pd.DataFrame({'A': [1, 1, 1, 2, 2],
                    'B': range(5),
                    'C': range(5)})

df1 = df.groupby('A').B.agg({'B': ['count','nunique'],'C': ['sum','median']})
df1.columns = ["_".join(x) for x in df1.columns.ravel()]
Run Code Online (Sandbox Code Playgroud)

df1 输出

   B_count  B_nunique  C_sum  C_median
A                                     
1        3          3      3       1.0
2        2          2      7       3.5
Run Code Online (Sandbox Code Playgroud)

警告

__main__:1: FutureWarning: using a dict on a Series for aggregation
is deprecated and will be removed in a future version
Run Code Online (Sandbox Code Playgroud)

这是 Pandas 0.20 之前推荐的分组和重命名方式。在没有此警告的情况下实现相同 df1 输出的优雅方法是什么?

python pandas sklearn-pandas pandas-groupby

4
推荐指数
1
解决办法
8229
查看次数

什么是在pyspark中列出不同数据帧列的正确方法?

我想在spark数据帧中总结不同的列.

from pyspark.sql import functions as F
cols = ["A.p1","B.p1"]
df = spark.createDataFrame([[1,2],[4,89],[12,60]],schema=cols)

# 1. Works
df = df.withColumn('sum1', sum([df[col] for col in ["`A.p1`","`B.p1`"]]))

#2. Doesnt work
df = df.withColumn('sum1', F.sum([df[col] for col in ["`A.p1`","`B.p1`"]]))

#3. Doesnt work
df = df.withColumn('sum1', sum(df.select(["`A.p1`","`B.p1`"])))
Run Code Online (Sandbox Code Playgroud)

为什么不接近#2..不工作?我在Spark 2.2上

python apache-spark apache-spark-sql pyspark pyspark-sql

4
推荐指数
1
解决办法
8822
查看次数

如何在指定时间后停止执行 FastAPI 端点以减少 CPU 资源使用/成本?

使用案例

调用 的客户端微服务/do_something在 request/post() 调用中超时为 60 秒。此超时是固定的且无法更改。因此,如果/do_something需要 10 分钟,/do_something就会浪费 CPU 资源,因为客户端微服务在 60 秒后不会等待 的响应/do_something,这会浪费 CPU 10 分钟,从而增加成本。我们的预算有限。

当前的代码如下所示:

import time
from uvicorn import Server, Config
from random import randrange
from fastapi import FastAPI

app = FastAPI()

def some_func(text):
    """
    Some computationally heavy function
    whose execution time depends on input text size
    """
    randinteger = randrange(1,120)
    time.sleep(randinteger)# simulate processing of text
    return text


@app.get("/do_something")
async def do_something():
    response = some_func(text="hello world")
    return {"response": …
Run Code Online (Sandbox Code Playgroud)

python timeout fastapi

4
推荐指数
1
解决办法
6784
查看次数

如何将PySpark数据帧的每个非字符串列与浮点常量相除或相乘?

我的输入数据框如下所示

from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("Basics").getOrCreate()

df=spark.createDataFrame(data=[('Alice',4.300,None),('Bob',float('nan'),897)],schema=['name','High','Low'])

+-----+----+----+
| name|High| Low|
+-----+----+----+
|Alice| 4.3|null|
|  Bob| NaN| 897|
+-----+----+----+
Run Code Online (Sandbox Code Playgroud)

预期产出除以10.0

+-----+----+----+
| name|High| Low|
+-----+----+----+
|Alice| 0.43|null|
|  Bob| NaN| 89.7|
+-----+----+----+
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark spark-dataframe pyspark-sql

3
推荐指数
2
解决办法
5934
查看次数

如何基于值作为列表的字典替换熊猫系列中的字符串组?

我无法在 stackoverflow 中找到基于值在列表中的字典进行替换的解决方案。

字典

dct  = {"LOL": ["laught out loud", "laught-out loud"],
        "TLDR": ["too long didn't read", "too long; did not read"],
        "application": ["app"]}
Run Code Online (Sandbox Code Playgroud)

输入

input_df = pd.DataFrame([("haha too long didn't read and laught out loud :D"),
                         ("laught-out loud so I couldnt too long; did not read"),
                         ("what happened?")], columns=['text'])
Run Code Online (Sandbox Code Playgroud)

预期输出

output_df = pd.DataFrame([("haha TLDR and LOL :D"),
                          ("LOL so I couldnt TLDR"),
                          ("what happened?")], columns=['text'])
Run Code Online (Sandbox Code Playgroud)

编辑

在字典中添加了一个额外的条目,即“应用程序”:[“应用程序”]

当前的解决方案将输出作为“什么应用程序?”

请建议修复。

python regex dictionary replace pandas

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

如何使用熊猫汇总值以在每个ID的数据框单元格中创建列表?

我有一个数据框,如下所示:

id  value
100 a
100 b
100 c
100 d
200 1
200 2
200 3
Run Code Online (Sandbox Code Playgroud)

如何汇总为以下格式?

id  value
100 ['a','b','c','d']
200 ['1','2','3']
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

如何根据Python中最近的聚类质心逻辑将新的观察值分配给现有的Kmeans聚类?

我使用下面的代码通过 Scikit learn 创建 k-means 集群。

kmean = KMeans(n_clusters=nclusters,n_jobs=-1,random_state=2376,max_iter=1000,n_init=1000,algorithm='full',init='k-means++')

kmean_fit = kmean.fit(clus_data)
Run Code Online (Sandbox Code Playgroud)

我还使用保存了质心kmean_fit.cluster_centers_

然后我腌制了 K 均值对象。

filename = pickle_path+'\\'+'_kmean_fit.sav'
pickle.dump(kmean_fit, open(filename, 'wb'))
Run Code Online (Sandbox Code Playgroud)

这样我就可以加载相同的 kmeans pickle 对象并在新数据出现时将其应用到新数据中,使用kmean_fit.predict().

问题 :

  1. 加载 kmeans pickle 对象并应用的方法是否 kmean_fit.predict()允许我根据现有集群的质心将新观察值分配给现有集群?这种方法是否只是从头开始对新数据进行重新聚类?

  2. 如果此方法不起作用,鉴于我已经使用高效的 p​​ython 代码保存了集群质心,如何将新观察值分配给现有集群?

PS:我知道使用现有集群作为因变量构建分类器是另一种方法,但由于时间紧迫,我不想这样做。

python cluster-analysis k-means scikit-learn text-classification

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

如何为pandas中的多个变量明智地创建所有组合?

对于n个变量的给定范围.我以n = 3为例.

A : [1,3]
B:  [5,10,12]
C: [100,113]
Run Code Online (Sandbox Code Playgroud)

请注意,上述范围内的值也可以是浮点数.

我们如何创建一个数据框,其中每列代表输入变量的唯一组合?

    c1  c2  c3  c4  c5  c6  c7  c8  c9  c10 c11 c12
a   1   1   1   3   3   3   1   1   1   3   3   3
b   5   10  12  5   10  12  5   10  12  5   10  12
c   100 100 100 100 100 100 113 113 113 113 113 113
Run Code Online (Sandbox Code Playgroud)

python combinations loops python-itertools dataframe

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