我有一个包含 2,760,000 行的表。在mysqlworkbench中,从原始表中选择*需要36秒。
我想使用 python 中的现有表创建另一个表(使用my_func()转换值)。
但是,当我在命令行中运行它时,它似乎永远不会完成。
sql = "SELECT ID, Eye, Values FROM my_original_table"
curQuery.execute(sql)
for row in curQuery.fetchall():
dat = list(row)
id = dat.pop(0)
eye = dat.pop(0)
values = dat.pop(0)
v = my_func(values)
if v != None :
sql = "INSERT INTO new_table VALUES ( '%s', '%s', %d );" % (id, eye, v)
print(sql)
curExe.execute(sql)
db.commit()
Run Code Online (Sandbox Code Playgroud)
但是,如果我将LIMIT 0,10添加到我的第一个选择 sql (如下所示),它运行良好。所以,这意味着我的程序是正确的。但这是否意味着如果没有“限制”,数据太多,我的计算机无法处理?我该如何解决这个问题?
sql = "SELECT ID, Eye, Values FROM ETCEpisodeVisualAcuity LIMIT 0,10"
Run Code Online (Sandbox Code Playgroud) 我通过连接到某些API的脚本创建了超过50万个JSON文档.我想将这些文档导入RethinkDB,但似乎RethinkDB无法大量导入文件,因此我考虑将所有这些文件合并到一个大的JSON文件中(比如bigfile.json).这是他们的结构:
档案1.json:
{
"key_1": "value_1.1",
"key_2": "value_1.2",
"key_3": "value_1.3",
...
"key_n": "value_1.n"
}
Run Code Online (Sandbox Code Playgroud)
文件2.json:
{
"key_1": "value_2.1",
"key_2": "value_2.2",
"key_3": "value_2.3",
...
"key_n": "value_2.n"
}
...
Run Code Online (Sandbox Code Playgroud)
文件n.json:
{
"key_1": "value_n.1",
"key_2": "value_n.2",
"key_3": "value_n.3",
...
"key_n": "value_n.n"
}
Run Code Online (Sandbox Code Playgroud)
我想知道哪个是创建一个大JSON文件的最佳结构(完整,每个文件都有一个由3个变量组成的特定名称,第一个是时间戳(YYYYMMDDHHMMSS)),以及哪个命令或脚本(到现在为止)我只为bash编写脚本...)允许我产生合并.
我在data.table,group by中汇总数据,我需要在组中获取变量的单个值.我希望这个值成为组的模式.我认为它需要是模式,因为通常一个组是8行,它将在一个值上有2行,而另外6个行将是另一个值.
这是一个简化的例子,由此:
key1 2
key1 2
key1 2
key1 8
key1 2
key1 2
key1 2
key1 8
Run Code Online (Sandbox Code Playgroud)
我要这个:
key1 2
Run Code Online (Sandbox Code Playgroud)
我在使用基础R提供的标准模式功能时遇到了麻烦,所以我在这里使用了这个解决方案: 按组划分最频繁的值(模式)
Mode <- function(x) {
ux <- unique(x)
ux[which.max(tabulate(match(x, ux)))]
}
Run Code Online (Sandbox Code Playgroud)
它在我的小测试数据集上运行得很好,但是当我在我的实际数据集(2200万行)上运行它时,它只运行并运行和运行.我所有其他类似的 data.table操作工作得很好而且非常快,但我没有使用UDF.这是我的data.table查询的结构:
ModeCharacterColumns <- ExposureHistory[,lapply(.SD,Mode), .(Key1=Key1, Key2=Key2, ..., key7=key7, key8=key8), .SDcols=('col1','col2','col3', ..., 'col53')]
Run Code Online (Sandbox Code Playgroud)
所以我猜我的问题是我的UDF确实让事情变慢了,有没有人有任何建议我可以完成同样的目标但是更快地完成它?
谢谢大家!
编辑: 更好地表示数据:
DT <- fread("key1A key2A key3A key4A 2 2 4 s
key1A key2A key3A key4A 2 2 4 s
key1A key2A key3A key4A 8 8 8 t
key1A key2A …Run Code Online (Sandbox Code Playgroud) 我必须从包含 3000 万行的表中提取数据。表中的特征是visits_id(primary)survey_id company_id
我必须计算每家公司每次调查的访问次数,因为我知道一家公司可以进行多项调查。
我提出的查询是:
SELECT v.survey_id, v.company_id, COUNT(*)
FROM visit AS v
GROUP BY v.survey_id, v.company_id
Run Code Online (Sandbox Code Playgroud)
主要问题是它需要很长时间。无论如何优化查询?或者对于 SQL 是不可能做的事情还是不值得付出努力?
所以我们很多人都在谈论大数据问题.我知道一些应用程序,如页面排名,k-means和其他机器学习算法以及web索引等.
有没有人知道任何其他类型的大数据应用程序.
例如,我们有以下文本:
“Spark 是一个用于编写快速分布式程序的框架。Spark 解决了与 Hadoop MapReduce 类似的问题,但采用了快速的内存方法和简洁的函数式 API。......”
我需要这个文本的所有可能的部分,一字一字,然后两两,三三到五到五。像这样:
: ['Spark', 'is', 'a', 'framework', 'for', 'writing, 'fast', 'distributed', 'programs', ...]
twos : ['Spark is', 'is a', 'a framework', 'framework for', 'for writing' ...]
三:['Spark is a', 'is a framework', 'a framework for', 'framework for writing', 'for write fast', ...]
. . .
五:['Spark 是一个框架','是一个写作框架','一个快速写作的框架','一个快速分布式写作的框架',...]
请注意,要处理的文本是大文本(约 100GB)。我需要这个过程的最佳解决方案。可能应该并行处理多线程。
我不需要一次完整的列表,它可以流式传输。
我需要在一秒钟内将 PB 级文本数据加载到存储 (RAM/SSD) 中。
下面是解决上述问题的一些问题。
1) 实际上/理论上是否可以在一秒钟内加载 PB 级的数据?2) 为了实现亚秒级快速加载 PB 级数据,最佳设计方法是什么。3)有可用的基准方法吗?
我可以使用任何类型的技术来实现,例如 Hadoop、spark、HPCC 等......
我是一名具有5年经验的Java开发人员。现在我想将自己的职业转变为云数据工程。因此,我想参加Google Cloud Data Engineer Certfication。因此,在申请认证之前,我需要学习Spark。
在学习云数据工程概念之前,我是否需要学习Spark概念。
提前致谢。
让我们考虑以下问题.我们有一个包含大量数据的系统(大数据).所以,实际上我们有一个数据库.作为第一个要求,我们希望能够快速写入和读取数据库.我们还希望拥有一个到数据库的Web界面(以便不同的客户端可以远程写入和读取数据库).
但是我们想拥有的系统应该不仅仅是一个数据库.首先,我们希望能够对数据运行不同的数据分析算法,以查找规律性,相关性,异常性等(就像之前我们对性能的关注一样).其次,我们希望将机器学习机器绑定到数据库.这意味着我们希望在数据上运行机器学习算法,以便能够学习数据上存在的"关系",并基于此预测尚未存在于数据库中的条目的值.
最后,我们希望有一个基于点击的界面,可视化数据.这样用户就可以以漂亮的图形,图形和其他交互式可视化对象的形式看到数据.
什么是上述问题的标准和广泛认可的方法.必须使用哪些编程语言来处理所描述的问题?
database data-visualization machine-learning data-analysis bigdata