小编Piy*_*ush的帖子

如何在Amazon Aws上运行Python Spark代码?

我在spark中编写了一个python代码,我想在Amazon的Elastic Map reduce上运行它.

我的代码在我的本地机器上工作得很好,但我对如何在亚马逊的AWS上运行它感到有些困惑?

更具体地说,我应该如何将我的python代码转移到主节点?我是否需要将我的Python代码复制到我的s3存储桶并从那里执行?或者,我应该ssh到Master并将我的python代码scp到Master中的spark文件夹?

现在,我尝试在我的终端上本地运行代码并连接到群集地址(我通过读取spark的--help标志的输出来做到这一点,所以我可能在这里缺少一些步骤)

./bin/spark-submit --packages org.apache.hadoop:hadoop-aws:2.7.1 \
--master spark://hadoop@ec2-public-dns-of-my-cluster.compute-1.amazonaws.com \
mypythoncode.py
Run Code Online (Sandbox Code Playgroud)

我尝试使用和没有我的权限文件,即

-i permissionsfile.pem
Run Code Online (Sandbox Code Playgroud)

然而,它失败了,堆栈跟踪显示了一些东西

Exception in thread "main" java.lang.IllegalArgumentException: AWS Access Key ID and Secret Access Key must be specified as the username or password (respectively) of a s3n URL, or by setting the fs.s3n.awsAccessKeyId or fs.s3n.awsSecretAccessKey properties (respectively).
    at org.apache.hadoop.fs.s3.S3Credentials.initialize(S3Credentials.java:66)
    at org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore.initialize(Jets3tNativeFileSystemStore.java:49)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ......
    ......
Run Code Online (Sandbox Code Playgroud)

我的方法是否正确,我需要解决Access问题才能开始,或者我是朝着错误的方向前进?

这样做的正确方法是什么?

我在youtube上搜索了很多但是找不到关于在Amazon的EMR上运行Spark的任何教程.

如果有帮助,我正在处理的数据集是亚马逊公共数据集的一部分.

amazon-s3 amazon-web-services apache-spark pyspark

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

为 Pandas Dataframe 中的两列创建稀疏矩阵

我正在尝试从 Pandas 数据集(>10Gb)创建稀疏矩阵

假设我有一个类型的数据集

表:类别

    student |teacher
---------------------
0   | abc   |   a
1   | def   |   g
Run Code Online (Sandbox Code Playgroud)

我有一份学生名单

students = [ "abc", "def", "ghi", "jkl","mno"]
Run Code Online (Sandbox Code Playgroud)

以及教师名单

teachers = ["a","b","c","d","e","f","g"]
Run Code Online (Sandbox Code Playgroud)

我的目标是创建一个稀疏矩阵,如果表 Class 中的学生-教师之间存在对应关系,则布尔值为 1。

稠密矩阵应如下所示:

    a   b   c   d   e   f   g

abc 1   0   0   0   0   0   0
def 0   0   0   0   0   0   1
ghi 0   0   0   0   0   0   0
jkl 0   0   0   0   0   0   0
mno 0   0   0   0   0 …
Run Code Online (Sandbox Code Playgroud)

python matrix scipy sparse-matrix pandas

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

对于拥有数百万粉丝的用户,请使用tweepy获取所有Twitter提及

我有一个项目在哪里,我会下载过去一年发送给名人的所有推文,并对他们做一个情绪分析,并评估谁是最积极的粉丝.

然后我发现你可以使用tweepy/twitter API在最近7天内检索twitter提及.我清理了网络,但在过去的一年里找不到任何下载推文的方法.

无论如何,我决定仅在过去7天内完成该项目的数据并编写以下代码:

try:
    while 1:
        for results in tweepy.Cursor(twitter_api.search, q="@celebrity_handle").items(9999999):
            item = (results.text).encode('utf-8').strip()
            wr.writerow([item, results.created_at])  # write to a csv (tweet, date)
Run Code Online (Sandbox Code Playgroud)

我正在使用Cursor搜索api,因为获取提及的一种方式(更准确的方法)仅限于检索最后800条推文.

无论如何,在一夜之间运行代码之后,我只能下载32K的推文.其中约90%是转推.

是否有更好的方法来获取数据?

请记住:

  1. 我想为多个名人做这件事.(拥有数百万粉丝的着名人物).
  2. 我不关心转推.
  3. 他们每天都有成千上万的推文发送给他们.

任何建议都会受到欢迎,但在目前这一刻,我的想法不合时宜.

python twitter tweepy sentiment-analysis

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

在Jinja模板中指定字段的宽度

有没有办法指定Jinja模板中每个字段的宽度?

例如,我希望我的输出显示如下:

Name           Roll  Address                      Subject1        Subject2  
Run Code Online (Sandbox Code Playgroud)

我希望每个字段都具有与之关联的宽度。每个字段都有不同的宽度

我找到了一种借助Python格式化来做到这一点的方法

template = "{:20} {:2} {:30} {:10} {:10}"
fields = template.format("Name", "Roll", "Address","Subject1", "Subject1")
print(fields)
Run Code Online (Sandbox Code Playgroud)

但是,我需要在Jinja2中执行此操作的方法,因为我有很多字段,其中一些字段需要条件格式。有没有一种方法而不必对它们之间的空格进行硬编码?

{{Name}}              {{Roll}}  {{Address}}             {{Subject1}}              {{Subject2}} 
Run Code Online (Sandbox Code Playgroud)

python jinja2

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

检查 RDD 中是否存在值

我用 python 编写了一个运行正常的 Spark 程序。

但是,它在内存消耗方面效率低下,我正在尝试对其进行优化。我在 AWS EMR 上运行它,而 EMR 正在杀死消耗太多内存的工作。

 Lost executor 11 on ip-*****: Container killed by YARN for exceeding memory limits. 11.4 GB of 10.4 GB physical memory used. Consider boosting spark.yarn.executor.memoryOverhead.
Run Code Online (Sandbox Code Playgroud)

我相信这个内存问题是由于我在多个实例中收集我的 RDD(即使用 .collect() ),因为在后期阶段,我需要测试由这些 RDD 组成的列表中是否存在某些值.

所以,目前我的代码是这样的:

myrdd = data.map(lambda word: (word,1))     \
       .reduceByKey(lambda a,b: a+b)   \
       .filter(lambda (a, b): b >= 5) \
       .map(lambda (a,b) : a)          \
       .collect()
Run Code Online (Sandbox Code Playgroud)

稍后在代码中

if word in myrdd:
    mylist.append(word)

myrdd2 = data2.map(lambda word: (word,1))     \
       .reduceByKey(lambda a,b: a+b) …
Run Code Online (Sandbox Code Playgroud)

python apache-spark pyspark

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

在pandas中根据另一列的值创建新列

我有一些关于不同个体性别的数据集.比如说,数据集看起来像这样:

Male
Female
Male and Female
Male
Male
Female
Trans
Unknown
Male and Female
Run Code Online (Sandbox Code Playgroud)

有些人认为自己是男性,有些是女性,有些人认为自己是男性和女性.

现在,我想要做的是在Pandas中创建一个映射的新列

Males to 1, 
Females to 2,
Others to 3
Run Code Online (Sandbox Code Playgroud)

我写了一些代码

def gender(x):
    if x.str.contains("Male")
        return 1
    elif x.str.contains("Female")
        return 2
    elif return 3

df["Gender Values"] = df["Gender"].apply(gender)
Run Code Online (Sandbox Code Playgroud)

但我得到的错误是函数不包含任何属性.我尝试删除str:

x.contains("Male")
Run Code Online (Sandbox Code Playgroud)

我得到了同样的错误

有一个更好的方法吗?

python pandas

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

如何放大seaborn/matplotlib中的直方图?

我制作了一个看起来像这样的直方图:

在此处输入图片说明

我用来生成这个图的代码:

sns.countplot(table.column_name)
Run Code Online (Sandbox Code Playgroud)

如您所见,由于数据分布不均,整个直方图聚集在左端。

如何在左端放大?

我尝试过的一种方法,它给了我稍微好一点的结果:

plt.xlim(0,25)
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗?

python matplotlib histogram seaborn

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

无法读取第一个字符串

这是代码

#include<iostream>
#include<cstring>
#define limit 25
using namespace std;

int main()
{
    int te; //Number of test cases
    cin>>te;


    while(te)
    {

    char m[limit];
    char w[limit];

    cin.getline(m,limit); // This line is not getting executed for some reason
    cin.getline(w,limit);

    cout<<"m "<<m<<" "<<endl<<"w "<<w<<endl;

    te--;

    }

}
Run Code Online (Sandbox Code Playgroud)

因为上帝知道是什么原因,机器拒绝为第一个测试用例读取m.在其他情况下,它读取并打印m和w的值,但对于第一种情况,它拒绝读取m.

样品:

INPUT
1
hello


m is 
w is hello


2

hello
m 
w  hello

stack
overflow

m  stack
w overflow
Run Code Online (Sandbox Code Playgroud)

c++ string cin

-1
推荐指数
1
解决办法
148
查看次数