小编twd*_*wds的帖子

Hive:SELECT AS和GROUP BY的更简洁方法

我试着像这样编写Hive Sql

SELECT count(1), substr(date, 1, 4) as year
FROM ***
GROUP BY year
Run Code Online (Sandbox Code Playgroud)

但是Hive无法识别别名'year',它抱怨:FAILED:SemanticException [错误10004]:行1:79无效的表别名或列引用'year'

一个解决方案(Hive:SELECT AS和GROUP BY)建议使用'GROUP BY substr(date,1,4)'.

有用!但是在某些情况下,我想分组的值可能是从多行hive函数代码生成的,编写代码就像是非常难看

SELECT count(1), func1(func2(..........................)) AS something
FROM ***
GROUP BY func1(func2(..........................))
Run Code Online (Sandbox Code Playgroud)

Hive有没有干净的方法来做到这一点?有什么建议?

hadoop hive hiveql

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

MySQL中的Sqlalchemy批量更新工作非常慢

我正在使用SQLAlchemy 1.0.0,并希望UPDATE ONLY批量生成一些(更新,如果匹配主键,则不执行任何操作)查询.

我做了一些实验,发现批量更新看起来比批量插入或批量更慢upsert.

能否请你帮我指出为什么它的工作如此缓慢或是否有其他方法/想法来制作BULK UPDATE (not BULK UPSERT) with SQLAlchemy

下面是MYSQL中的表:

CREATE TABLE `test` (
  `id` int(11) unsigned NOT NULL,
  `value` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

和测试代码:

from sqlalchemy import create_engine, text
import time

driver = 'mysql'
host = 'host'
user = 'user'
password = 'password'
database = 'database'
url = "{}://{}:{}@{}/{}?charset=utf8".format(driver, user, password, host, database)

engine = create_engine(url)
engine.connect()

engine.execute('TRUNCATE TABLE test')

num_of_rows = …
Run Code Online (Sandbox Code Playgroud)

python mysql bulkinsert sqlalchemy bulkupdate

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

Sklearn 在线预测,批量 vs 一一

正如很多地方所说,对于大小为 10000 的输入数据,批量预测整个数据比逐行预测要快得多(在这两种情况下,model.n_jobs=1)。

我知道一对一的解决方案有很多开销。但是在在线服务中,请求是一个接一个地来的,很难先聚合它们然后批量预测。

另一种解决方案是仅将 scikit-learn 用于训练/验证,并开发一个项目来加载模型文件并优化一对一预测。

问题是预测项目需要知道每种模型的细节(我们可能会使用随机森林、LR 等)。

所以我的问题是有什么解决方案可以减少 sklearn 的一对一预测开销?

scikit-learn 版本:0.20.0(你可以提出任何其他版本可以解决这个问题)

python scikit-learn

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