小编bla*_*hop的帖子

从 CSV 读取 Pyspark 中的字符串数组作为数组

我有一个csv包含这样数据的文件

ID|Arr_of_Str
 1|["ABC DEF"]
 2|["PQR", "ABC DEF"]
Run Code Online (Sandbox Code Playgroud)

我想读取这个.csv文件,但是当我使用时sqlContext.read.load,它将它作为字符串读取

当前的:

df.printSchema()

root
 |-- ID: integer (nullable = true)
 |-- Arr_of_Str: string (nullable = true)
Run Code Online (Sandbox Code Playgroud)

预期的:

df.printSchema()

root
 |-- ID: integer (nullable = true)
 |-- Arr_of_Str: array (nullable = true)
      |-- element: string (containsNull = true)
Run Code Online (Sandbox Code Playgroud)

如何将字符串转换为字符串数组?

apache-spark apache-spark-sql pyspark

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

pySpark withColumn 与函数

我有一个包含 2 列的数据框:account_id并且email_address,现在我想再添加一列updated_email_address,我在该列上调用一些函数email_address来获取updated_email_address. 这是我的代码:

def update_email(email):
  print("== email to be updated: " + email)
  today = datetime.date.today()
  updated = substring(email, -8, 8) + str(today.strftime('%m')) + str(today.strftime('%d')) + "_updated"
  return updated

df.withColumn('updated_email_address', update_email(df.email_address))
Run Code Online (Sandbox Code Playgroud)

但结果显示updated_email_address列为空:

+---------------+--------------+---------------------+
|account_id     |email_address |updated_email_address|
+---------------+--------------+---------------------+
|123456gd7tuhha |abc@test.com  |null           |
|djasevneuagsj1 |cde@test.com  |null           |
+---------------+--------------+---------------+
Run Code Online (Sandbox Code Playgroud)

updated_email在它打印出来的函数内部:

Column<b'(email_address + == email to be udpated: )'>
Run Code Online (Sandbox Code Playgroud)

它还将 df 的列数据类型显示为:

dfData:pyspark.sql.dataframe.DataFrame
account_id:string
email_address:string
updated_email_address:double
Run Code Online (Sandbox Code Playgroud)

为什么updated_email_address列类型是double?

user-defined-functions apache-spark apache-spark-sql pyspark

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

Java URLClassLoader ClassNotFoundException

我必须.jar class loader在学校的作业中写一个。我在另一个问题中找到了这段代码,但不知道为什么它不起作用。

我已将路径设置为绝对路径,以确保它引用正确的文件。

System.out.println("Loading game: " + name);
URL url = new URL("file:///home/<name>/Documents/School/thema2.3/batavus/batavus/gamemodules/TicTacToe.jar");
ClassLoader loader = new URLClassLoader(new URL[]{url});
Class<?> clazz = loader.loadClass("spatboard.game." + name);
Class<? extends Game> boardClass = clazz.asSubclass(Game.class);
Constructor<? extends Game> ctor = boardClass.getConstructor();
return ctor.newInstance(board);
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

Loading game: TicTacToe
java.lang.ClassNotFoundException: spatboard.game.TicTacToe
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at spatbord.loader.GameLoader.loadModule(GameLoader.java:29)
at spatbord.model.Board.<init>(Board.java:51)
at spatbord.controller.GameController.onMatchStarted(GameController.java:157)
at spatbord.connection.Server.matchStarted(Server.java:428)
at spatbord.connection.Server.handleInput(Server.java:346)
at spatbord.connection.Server.run(Server.java:145)
at java.lang.Thread.run(Thread.java:745)
Run Code Online (Sandbox Code Playgroud)

中的包声明TicTacToepackage spatbord.game;

罐子的内容是:

spatbord
 -> game
  -> TicTacToe.class
Run Code Online (Sandbox Code Playgroud)

我在这里看不到什么?

java jar classloader

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

span onclick不起作用jquery

我有一个用css和jquery创建的树视图结构.要展开一个节点我想用户点击一个<span>在中<li>(这是一个图像),而不是节点本身.

所以这是我的HTML部分:

<div class="tree">      
<ul>
<li class="parent active"><span class="expand"></span><a>Level 1</a>
    <ul>
        <li><span class="expand"></span><a>Level 2</a></li>
        <li><span class="expand"></span><a>Level 2</a></li>
        <li><span class="expand"></span><a>Level 2</a></li>
        <li><span class="expand"></span><a>Level 2</a></li>
    </ul>
</li>
<li class="parent active"><span class="expand"></span><a>Level 1</a>
    <ul>
        <li class="parent active"><span class="expand"></span><a>Level 2</a>
          <ul>
             <li class="parent active"><span class="expand"></span><a>Level 3</a>
                <ul>
                   <li><a>Level 4</a></li>
                </ul>
          </ul>
        </li>
        <li><span class="expand"></span><a>Level 2</a></li>
    </ul>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)

这是跨度上的clikc事件的JS部分(但它不起作用):

$( '.tree li.parent > span.expand' ).click( function( ) {
    $( this ).parent().toggleClass( 'active' );
    $( this ).parent().children( 'ul' ).slideToggle( 'fast' …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery

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

我可以在HTML电子邮件中使用columns标记吗?

我正在尝试创建一个包含三列的HTML简报.我尝试过使用columns标签:

<span style="-webkit-column-count: 3; -moz-column-count:3; column-count:3; -webkit-column-width: 160px; -moz-column-width:160px; column-width:160px; -webkit-column-gap:40px; -moz-column-gap:40px; column-gap:40px;">
 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla a consectetur mi, a volutpat orci. Morbi id metus eget sem sollicitudin luctus volutpat ac sapien. Maecenas et metus maximus nisl aliquet consequat. Morbi rutrum justo id felis posuere tempus. Nulla sollicitudin sodales augue, eu varius urna fermentum at. Integer euismod suscipit nunc. Maecenas fermentum tristique libero in sagittis....
</span>
Run Code Online (Sandbox Code Playgroud)

但它在gmail中显示为一个段落.

html css gmail html-email

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

如何从pyspark中的Spark数据帧的列中删除引号“”

我有一个数据框。

+-------+-----+
|   Name|  age|
+-------+-----+
|  "aaa"|  111|
|"asasa"| 8888|
| "2323"|  999|
|"wewwe"|99999|
+-------+-----+
Run Code Online (Sandbox Code Playgroud)

我希望它像:

+-------+-----+
|   Name|  age|
+-------+-----+
|  aaa  |  111|
| asasa | 8888|
| 2323  |  999|
| wewwe |99999|
+-------+-----+
Run Code Online (Sandbox Code Playgroud)

如何使用 pyspark 代码在 Spark 2 中实现这一点?

如果有解决办法,请回复。

apache-spark apache-spark-sql pyspark

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

如何在 Spark SQL 中格式化日期?

我需要将这个给定的日期格式转换2019-10-22 00:00:00为:2019-10-22T00:00:00.000Z

我知道这可以通过以下方式在某些数据库中完成:

在 AWS Redshift 中,您可以使用以下方法实现此目的:

TO_DATE('{RUN_DATE_YYYY/MM/DD}', 'YYYY/MM/DD') || 'T00:00:00.000Z' AS VERSION_TIME
Run Code Online (Sandbox Code Playgroud)

但是我的平台是 Spark SQL,所以以上两个都不适合我,我能得到的最好的就是使用这个:

concat(d2.VERSION_TIME, 'T00:00:00.000Z') as VERSION_TIME
Run Code Online (Sandbox Code Playgroud)

这有点hacky,但仍然不完全正确,有了这个,我得到了这个日期格式:2019-10-25 00:00:00T00:00:00.000Z,但是 00:00:00字符串中间的这部分是多余的,我不能把它留在那里。

任何人在这里有任何见解将不胜感激!

sql date-format apache-spark apache-spark-sql pyspark

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

Scala/Spark - 如何获取所有子数组的第一个元素

我在 Spark 中有以下 DataFrame(我使用的是 Scala):

[[1003014, 0.95266926], [15, 0.9484202], [754, 0.94236785], [1029530, 0.880922], [3066, 0.7085166], [1066440, 0.69400793], [1045811, 0.663178], [1020059, 0.6274495], [1233982, 0.6112905], [1007801, 0.60937023], [1239278, 0.60044676], [1000088, 0.5789191], [1056268, 0.5747936], [1307569, 0.5676605], [10334513, 0.56592846], [930, 0.5446228], [1170206, 0.52525467], [300, 0.52473146], [2105178, 0.4972785], [1088572, 0.4815367]]
Run Code Online (Sandbox Code Playgroud)

我想获得一个只有每个子数组的第一个 Int 的 Dataframe,如下所示:

[1003014, 15, 754, 1029530, 3066, 1066440, ...]
Run Code Online (Sandbox Code Playgroud)

因此仅保留x[0]上面列出的数组的每个子数组 x 。

我是 Scala 新手,找不到合适的匿名映射函数。预先感谢您的任何帮助

scala apache-spark apache-spark-sql

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

从数组元素中删除子字符串并复制 pyspark

我有一个 pyspark 数据框:

number  |  matricule      
--------------------------------------------
1       |  ["AZ 1234", "1234", "00100"]                   
--------------------------------------------
23      |  ["1010", "12987"]                   
--------------------------------------------
56      |  ["AZ 98989", "22222", "98989"]                   
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)

matricule数组中,如果我删除AZ字符串,我会有重复的值。我想删除"AZ"字符串然后删除matricule 数组中的重复值。知道有时我在 之后有一个空格AZ,我也应该将其删除。

我做了一个udf:

def remove_AZ(A)
    for item in A:
        if item.startswith('AZ'):
            item.replace('AZ','')
udf_remove_AZ = F.udf(remove_AZ)
df = df.withColumn("AZ_2", udf_remove_AZ(df.matricule))
Run Code Online (Sandbox Code Playgroud)

我在所有AZ_2列中都为空。

如何从matricule数组中的每个值中删除 AZ然后删除里面的重复项?谢谢

apache-spark pyspark pyspark-sql pyspark-dataframes

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

如何对pyspark数据帧中的单列进行整形操作?

我有一个很长的 pyspark 数据框,如下所示:

+------+
|number|
+------+
|12.4  |
|13.4  |
|42.3  |
|33.4  |
|42.3  |
|32.4  |
|44.2  |
|12.3  |
|45.4  |
+------+
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望将其重塑为nxn矩阵,其中nis sqrt(length of pyspark dataframe)

虽然有一个解决方案是将其转换为一个 numpy 数组,然后将其重塑为nxn矩阵,但我希望在 pyspark 中完成。因为我的数据超长(大概一亿行)。

所以我正在寻找的预期输出是这样的:

+------+------+------+
|12.4  | 13.4 | 42.3 |
|33.4  | 42.3 | 32.4 |
|44.2  | 12.3 | 45.4 |
+------+------+------+

Run Code Online (Sandbox Code Playgroud)

虽然我能够通过将其转换为熊猫然后转换为 numpy 然后进行重塑操作来正确地做到这一点。但我想在 Pyspark 本身中进行这种转换。因为下面的代码仅适用于几千行。

covarianceMatrix_pd = covarianceMatrix_df.toPandas()
nrows = np.sqrt(len(covarianceMatrix_pd))
covarianceMatrix_pd = covarianceMatrix_pd.to_numpy().reshape((int(nrows),int(nrows)))
covarianceMatrix_pd
Run Code Online (Sandbox Code Playgroud)

numpy pandas apache-spark apache-spark-sql pyspark

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