小编LaS*_*Sul的帖子

在Pyspark Dataframe中选择列

我正在寻找一种方法来在pyspark中选择我的数据帧的列.对于第一行,我知道我可以使用df.first()但不确定列,因为它们没有列名.

我有5列,想要遍历每一列.

+--+---+---+---+---+---+---+
|_1| _2| _3| _4| _5| _6| _7|
+--+---+---+---+---+---+---+
|1 |0.0|0.0|0.0|1.0|0.0|0.0|
|2 |1.0|0.0|0.0|0.0|0.0|0.0|
|3 |0.0|0.0|1.0|0.0|0.0|0.0|
Run Code Online (Sandbox Code Playgroud)

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

15
推荐指数
5
解决办法
6万
查看次数

Node JS - 对预检请求的 CORS 问题响应未通过访问控制检查:“Access-Control-Allow-Origin”标头的值

我的 Angular 2 Web 应用程序出现问题。

在 Node JS 服务器端,我遇到了 CORS 预检的问题。

我想在服务器上上传一个文件,当我这样做时,我遇到了这个问题:

XMLHttpRequest 无法加载http://localhost:4000/upload。对预检请求的响应未通过访问控制检查:当请求的凭据模式为“包含”时,响应中“Access-Control-Allow-Origin”标头的值不得为通配符“*”。因此,不允许访问Origin ' http://localhost:3000 '。XMLHttpRequest 发起的请求的凭证模式由 withCredentials 属性控制。

其中 localhost:4000 是我的服务器, localhost:3000 是我的客户端。

我的server.js文件是这样的:

require('rootpath')();
var express = require('express');
var app = express();
var cors = require('cors');
var bodyParser = require('body-parser');
var expressJwt = require('express-jwt');
var config = require('config.json');
var multer = require('multer');

app.use(cors());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(bodyParser.json());

// // use JWT auth to secure the api
app.use(expressJwt({ secret: config.secret }).unless({ path: ['/users/authenticate', …
Run Code Online (Sandbox Code Playgroud)

node.js cors angular

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

Pyspark - 获取具有条件的列的累积和

我有一个包含卡、时间和金额的数据框,我需要在一个月的窗口内汇总卡的金额(总和和计数)。

数据如下:

+--------------------+-------------------+------------+
|            card_uid|               date|amount_local|
+--------------------+-------------------+------------+
|card_001H4Mw1Ha0M...|2016-05-04 17:54:30|        8.99|
|card_0026uGZQwZQd...|2016-05-06 12:16:18|       16.19|
|card_0026uGZQwZQd...|2016-07-06 12:17:57|       16.19|
|card_003STfrgB8SZ...|2016-12-04 10:05:21|        58.8|
|card_005gBxyiDc6b...|2016-09-10 18:58:25|       27.95|
|card_005gBxyiDc6b...|2016-11-12 11:18:29|       12.99|
Run Code Online (Sandbox Code Playgroud)

这就是我到目前为止所做的。

+--------------------+-------------------+------------+----------------+
|            card_uid|               date|amount_local|duration_cum_sum|
+--------------------+-------------------+------------+----------------+
|card_001H4Mw1Ha0M...|2016-05-04 17:54:30|        8.99|            8.99|
|card_0026uGZQwZQd...|2016-05-06 12:16:18|       16.19|           16.19|
|card_0026uGZQwZQd...|2016-07-06 12:17:57|       16.19|           32.38|
|card_003STfrgB8SZ...|2016-12-04 10:05:21|        58.8|            58.8|
|card_005gBxyiDc6b...|2016-09-10 18:58:25|       27.95|           27.95|
|card_005gBxyiDc6b...|2016-11-12 11:18:29|       12.99|           40.94|
Run Code Online (Sandbox Code Playgroud)

窗口函数如下:

partition = Window.partitionBy("card_uid").orderBy("date")

previousTransactionDate = data.withColumn("previous_tr_time", lag(data.date).over(partition)).select("transaction_id", "card_uid", "date", "previous_tr_time") 

df_cum_sum = data.withColumn("duration_cum_sum", sum('amount_local').over(partition))

df_cum_sum.orderBy("card_uid","date").select("card_uid", "date", "amount_local", "duration_cum_sum").show()
Run Code Online (Sandbox Code Playgroud)

但我唯一想补充的是两件事:

  • 仅当日期小于一个月时才以相同方式聚合
  • 为 cum_sum输入零而不是相同的金额 …

python apache-spark pyspark

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

如何在字符之间查找和替换

我正在尝试在以下字符串中将第二个“ AND”替换为“ OR”:

country == "BR" AND (leftHour >= 6 AND rightHour < 24)

我的策略是使用regex做到这一点:\((.*)\) 但这匹配方括号之间的所有字符,我只想匹配AND两个方括号之间的字符。

在Go中是完美的,但是好的正则表达式就足够了。

编辑:字符串不是固定的,例如,我们可以有多个“ AND”,例如: currency == "USD" AND country == "BR" AND (leftHour >= 6 AND rightHour < 24)

regex go

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

PySpark 中日期时间的舍入时间

我正在尝试使用 pyspark 和 udf 来调整小时数。

该函数在 python 中工作正常,但在使用 pyspark 时效果不佳。

输入是:

date = Timestamp('2016-11-18 01:45:55') # type is pandas._libs.tslibs.timestamps.Timestamp

def time_feature_creation_spark(date):
    return date.round("H").hour

time_feature_creation_udf = udf(lambda x : time_feature_creation_spark(x), IntegerType())
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

然后我在提供 spark 的函数中使用它:

data = data.withColumn("hour", time_feature_creation_udf(data["date"])

错误是:

类型错误:“列”对象不可调用

预期输出只是日期时间中最接近的小时(例如 20h45 最接近 21h,因此返回 21)

python user-defined-functions apache-spark pyspark

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