我用python 3.6安装了pyspark,我使用jupyter notebook来初始化一个spark会话.
from pyspark.sql import SparkSession
spark = SparkSession.builder.appName("test").enableHieSupport.getOrCreate()
Run Code Online (Sandbox Code Playgroud)
运行没有任何错误
但是我写道,
df = spark.range(10)
df.show()
Run Code Online (Sandbox Code Playgroud)
它抛出了一个错误 - >
Py4JError: An error occurred while calling o54.showString. Trace:
py4j.Py4JException: Method showString([class java.lang.Integer, class java.lang.Integer, class java.lang.Boolean]) does not exist
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:318)
at py4j.reflection.ReflectionEngine.getMethod(ReflectionEngine.java:326)
at py4j.Gateway.invoke(Gateway.java:272)
at py4j.commands.AbstractCommand.invokeMethod(AbstractCommand.java:132)
at py4j.commands.CallCommand.execute(CallCommand.java:79)
at py4j.GatewayConnection.run(GatewayConnection.java:214)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我要面对这个问题.
如果我做,
from pyspark import SparkContext
sc = SparkContext()
print(sc.version)
'2.1.0'
Run Code Online (Sandbox Code Playgroud) 我在 python 中有一个 pySpark 数据框 -
from pyspark.sql.functions import col
dataset = sqlContext.range(0, 100).select((col("id") % 3).alias("key"))
Run Code Online (Sandbox Code Playgroud)
列名称是关键,我想使用变量选择此列。
myvar = "key"
Run Code Online (Sandbox Code Playgroud)
现在我想使用myvarselect 语句中的变量来选择此列
我试过这个
dataset.createOrReplaceTempView("dataset")
spark.sql(" select $myvar from dataset ").show
Run Code Online (Sandbox Code Playgroud)
但它返回给我一个错误
no viable alternative at input 'select $'(line 1, pos 8)
我如何在 pySpark 中实现这一目标?
请注意,我将来可能会有不同的列,并且我想传递 1 个以上的变量或者可能是一个listintoSELECT子句。
我有一个 pandas 数据框,如下所示
Dominant_Topic word appearance
Topic 0 aaaawww 50
Topic 0 aacn 100
Topic 0 aaren 20
Topic 0 aarongoodwin 200
Topic 1 aaronjfentress 10
Topic 1 aaronrodger 20
Topic 1 aasmiitkap 30
Topic 2 aavqbketmh 10
Topic 2 ab 10
Topic 2 abandon 1
Run Code Online (Sandbox Code Playgroud)
我想为每个分区获得密集排名,分区列是名为 的列Dominant_Topic。排名应根据每个分区中单词出现的次数降序排列。所以输出看起来像 -
Dominant_Topic word appearance dense_rank
Topic 0 aaaawww 50 3
Topic 0 aacn 100 2
Topic 0 aaren 20 4
Topic 0 aarongoodwin 200 1
Topic 1 aaronjfentress 10 3 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Python创建一个AWS Lambda函数。我想要创建一个zip部署程序包,然后将其上传到我的AWS环境中,而不是一个内联函数。我的源代码位于test.py文件中,而其他依赖项(如numpy,sklearn等)与源代码位于同一文件夹中。
我测试我的lambda函数时遇到错误。
无法导入模块'test':没有名为'sklearn .__ check_build._check_build'的模块___________________________________________________________________________ / var / task / sklearn / __ check_build的内容:setup.py
__pycache__ _check_build.cp36-win_amd64.pyd __init__.py ____________________________________________学习尚未正确构建。如果您已经从源代码安装了scikit-learn,请不要忘记在使用之前构建该软件包:运行python setup.py install或make在源目录中。如果您使用了安装程序,请检查它是否适合您的Python版本,操作系统和平台。
这是我驻留在test.py中的python源代码
from sklearn.model_selection import train_test_split
print('Loading function')
def lambda_handler(event, context):
#print("Received event: " + json.dumps(event, indent=2))
print("value1 is " + event['key1'])
print("value2 is " + event['key2'])
print("value3 is " + event['key3'])
return event
Run Code Online (Sandbox Code Playgroud)
如果我在源代码中导入numpy,则会遇到类似的问题。(无法导入多数组)
我正在使用安装每个库pip install numpy/scikit-learn -t /path/to/mydir/。
请帮助我解决问题。谢谢 !!
我在 S3 存储桶中有一堆具有这种模式的文件
myfile_2018_(0).tab
myfile_2018_(1).tab
myfile_2018_(2).tab
..
myfile_2018_(150).tab
Run Code Online (Sandbox Code Playgroud)
我想通过读取所有这些文件来创建一个 Spark Dataframe。如何创建此正则表达式模式并读取文件?
这些文件有标题。我正在使用 Scala 来完成这个任务。
我正在尝试在具有 8 个分区的 RDD 上使用 pyspark 来使用 forEachPartition() 方法。我的自定义函数尝试为给定的字符串输入生成字符串输出。这是代码
from google.cloud import language
from google.cloud.language import enums
from google.cloud.language import types
import pandas as pd
import datetime
def compute_sentiment_score(text):
client = language.LanguageServiceClient()
document = types.Document(content=text,type=enums.Document.Type.PLAIN_TEXT, language='en')
sentiment = client.analyze_sentiment(document=document).document_sentiment
return str(sentiment.score)
def compute_sentiment_magnitude(text):
client = language.LanguageServiceClient()
document = types.Document(content=text,type=enums.Document.Type.PLAIN_TEXT, language='en')
sentiment = client.analyze_sentiment(document=document).document_sentiment
return str(sentiment.magnitude)
import os
os.environ["GOOGLE_APPLICATION_CREDENTIALS"]="/path-to-file.json"
imdb_reviews = pd.read_csv('imdb_reviews.csv', header=None, names=['input1', 'input2'], encoding= "ISO-8859-1")
imdb_reviews.head()
input1 input2
0 first think another Disney movie, might good, ... 1
1 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用谷歌云自然语言 API 来分析实体情绪。
from google.cloud import language_v1
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = 'path/to/json'
client = language_v1.LanguageServiceClient()
text_content = 'Grapes are good. Bananas are bad.'
# Available types: PLAIN_TEXT, HTML
type_ = language_v1.Document.Type.PLAIN_TEXT
# Optional. If not specified, the language is automatically detected.
# For list of supported languages:
# https://cloud.google.com/natural-language/docs/languages
document = language_v1.Document(content=text_content, type_=language_v1.Document.Type.PLAIN_TEXT)
# Available values: NONE, UTF8, UTF16, UTF32
encoding_type = language_v1.EncodingType.UTF8
response = client.analyze_entity_sentiment(request = {'document': document, 'encoding_type': encoding_type})
Run Code Online (Sandbox Code Playgroud)
然后我从响应中打印出实体及其属性。
for entity in response.entities:
print('=' * 20)
print(type(entity)) …Run Code Online (Sandbox Code Playgroud) 我正在尝试过滤掉字符串列表中等于 1 个字符或 2 个字符的单词。这是我的示例数据 -
l = ['new vaccine tech long term testing',
'concerned past negative effects vaccines flu shot b',
'standard initial screening tb never tb chest x ray']
Run Code Online (Sandbox Code Playgroud)
我尝试编写此逻辑,但不知何故,输出是单词列表而不是句子列表
cleaner = [ ''.join(word) for each in l for word in each.split() if len(word) > 2 ]
cleaner
['new',
'vaccine',
'tech',
'long',
'term',
'testing',
'concerned',
'past',
'negative',
'effects',
'vaccines',
'flu',
'shot',
'standard',
'initial',
'screening',
'never',
'chest',
'ray']
Run Code Online (Sandbox Code Playgroud)
我如何使这个输出如下
output = ['new vaccine tech long term testing',
'concerned past …Run Code Online (Sandbox Code Playgroud) 我在Mac OS上使用R Studio,我想使用caret软件包进行一些数据分析。但是,caret取决于rlang软件包,当我尝试加载caret软件包时,出现此错误-
> library(caret)
Error: package or namespace load failed for ‘caret’ in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]):
namespace ‘rlang’ 0.2.2 is already loaded, but >= 0.3.0.1 is required
In addition: Warning message:
package ‘caret’ was built under R version 3.4.4
Run Code Online (Sandbox Code Playgroud)
我rlang从用户界面中删除了该软件包,并尝试再次安装它,但是我遇到了以下问题-
> install.packages("rlang")
trying URL 'https://cran.rstudio.com/bin/macosx/el-capitan/contrib/3.4/rlang_0.3.0.1.tgz'
Content type 'application/x-gzip' length 1074663 bytes (1.0 MB)
==================================================
downloaded 1.0 MB
The downloaded binary packages are in
/var/folders/kh/9lkdq11x3sv56717v0700p_r_16f9p/T//RtmplrCvGX/downloaded_packages
> library(rlang) …Run Code Online (Sandbox Code Playgroud)