草庐IT

PySpark3

全部标签

python - 将逗号分隔的字符串转换为 pyspark 数据框中的数组

我有一个如下所示的数据框,其中ev是字符串类型。>>>df2.show()+---+--------------+|id|ev|+---+--------------+|1|200,201,202||1|23,24,34,45||1|null||2|32||2|null|+---+--------------+有没有办法在不使用UDF的情况下将ev转换为类型ArrayType,或者UDF是唯一的选择? 最佳答案 您可以使用内置的split函数:frompyspark.sql.functionsimportcol,splitdf=sc

python - 如何在交互式 PySpark session 中更改 SparkContext 属性

如何在pyspark交互式shell中更改spark.driver.maxResultSize?我使用了以下代码frompysparkimportSparkConf,SparkContextconf=(SparkConf().set("spark.driver.maxResultSize","10g"))sc.stop()sc=SparkContext(conf)但它给了我错误AttributeError:'SparkConf'objecthasnoattribute'_get_object_id' 最佳答案 在Spark2.3.1

python - 比较 Pyspark 中的列

我正在处理一个包含n列的PySparkDataFrame。我有一组m列(m例如:输入:PySparkDataFrame包含:col_1=[1,2,3],col_2=[2,1,4],col_3=[3,2,5]输出:col_4=max(col1,col_2,col_3)=[3,2,5]Pandas中有类似的东西,如this中所述。问题。在PySpark中有什么方法可以做到这一点,还是我应该更改将我的PySparkdf转换为Pandasdf然后执行操作? 最佳答案 您可以减少对列列表使用SQL表达式:frompyspark.sql.fun

python - 使用 Pyspark 和 Hive 显示来自特定数据库的表

在Hive实例中有一些数据库和表。我想显示某些特定数据库的表(比如3_db)。+------------------+--+| database_name  |+------------------+--+|1_db           ||2_db           ||3_db |+------------------+--+如果我从bash-nothingcomplex那里输入直线,我只需执行以下操作:showdatabases;showtablesfrom3_db;当我通过ipythonnotebeook使用pyspark时——我的廉价技巧在那里不起作用,而是在第二行给我错误

python - PySpark - 字符串匹配以创建新列

我有一个像这样的数据框:IDNotes2345CheckedbyJohn2398VerifiedbyStacy3983DoubleCheckedon2/23/17byMarsha例如,假设只有3名员工需要检查:John、Stacy或Marsha。我想像这样创建一个新专栏:IDNotesEmployee2345CheckedbyJohnJohn2398VerifiedbyStacyStacy3983DoubleCheckedon2/23/17byMarshaMarsharegex和grep哪个更好?我应该尝试什么样的功能?谢谢!编辑:我一直在尝试多种解决方案,但似乎没有任何效果。我应该放

python - 没有模块名称pyspark错误

这是我正在学习的教程中的确切代码。我的同学用同样的代码没有得到这个错误:ImportErrorTraceback(mostrecentcalllast)in()---->1frompysparkimportSparkContext2sc=SparkContext('local','Exam_3')34frompyspark.sqlimportSQLContext5sqlContext=SQLContext(sc)ImportError:Nomodulenamedpyspark这是代码:frompysparkimportSparkContextsc=SparkContext('local

python - 将 PySpark DataFrame ArrayType 字段组合成单个 ArrayType 字段

我有一个带有2个ArrayType字段的PySparkDataFrame:>>>dfDataFrame[id:string,tokens:array,bigrams:array]>>>df.take(1)[Row(id='ID1',tokens=['one','two','two'],bigrams=['onetwo','twotwo'])]我想将它们组合成一个ArrayType字段:>>>df2DataFrame[id:string,tokens_bigrams:array]>>>df2.take(1)[Row(id='ID1',tokens_bigrams=['one','two'

python - PySpark 使用字典映射创建新列

使用Spark1.6,我有一个SparkDataFrame列(命名为col1),其值为A、B、C、DS、DNS、E、F、G和H。我想用下面的dict中的值创建一个新列(比如col2)。我如何映射这个?(例如,“A”需要映射到“S”等)dict={'A':'S','B':'S','C':'S','DS':'S','DNS':'S','E':'NS','F':'NS','G':'NS','H':'NS'} 最佳答案 UDF的低效解决方案(独立于版本):frompyspark.sql.typesimportStringTypefrompy

python - 在 pyspark 中创建一个大字典

我正在尝试使用pyspark解决以下问题。我在hdfs上有一个格式为查找表转储的文件。key1,value1key2,value2...我想将其加载到pyspark中的python字典中并将其用于其他目的。所以我尝试这样做:table={}defpopulateDict(line):(k,v)=line.split(",",1)table[k]=vkvfile=sc.textFile("pathtofile")kvfile.foreach(populateDict)我发现表变量没有被修改。那么,有没有办法在spark中创建一个大的内存哈希表? 最佳答案

python - 通过 pyspark.ml CrossValidator 调整隐式 pyspark.ml ALS 矩阵分解模型的参数

我正在尝试调整使用隐式数据的ALS矩阵分解模型的参数。为此,我尝试使用pyspark.ml.tuning.CrossValidator来运行参数网格并选择最佳模型。我相信我的问题出在评估者身上,但我想不通。我可以使用回归RMSE评估器将其用于显式数据模型,如下所示:frompysparkimportSparkConf,SparkContextfrompyspark.sqlimportSQLContextfrompyspark.ml.recommendationimportALSfrompyspark.ml.tuningimportCrossValidator,ParamGridBuil