我正在尝试按照Hilbert顺序对d维数据向量进行排序,以批量加载空间索引.
但是,我不想明确计算每个点的希尔伯特值,特别是需要设置特定的精度.在高维数据中,这涉及诸如32*d比特之类的精度,这使得有效地变得非常混乱.当数据分布不均匀时,这些计算中的一些是不必要的,并且对于部分数据集的额外精度是必要的.
相反,我正在尝试进行分区方法.当您查看2D一阶希尔伯特曲线时
1 4
| |
2---3
Run Code Online (Sandbox Code Playgroud)
我首先沿着x轴分割数据,这样第一部分(不一定包含一半的对象!)将由1和2组成(尚未排序),第二部分将包含3和4的对象只要.接下来,我将在Y轴上再次分割每一半,但在3-4中反转顺序.
基本上,我想执行一种分而治之的策略(与QuickSort密切相关 - 在均匀分布的数据上,这甚至应该是最优的!),并且只根据需要计算hilbert索引的必要"位".所以假设"1"中有一个对象,那么就不需要计算它的完整表示; 如果对象均匀分布,分区大小将快速下降.
我知道通常的教科书方法转换为长,灰色编码,维度交错.这不是我想要的(有很多这方面的例子).我明确地想要一个懒惰的分而治之的排序.另外,我需要的不仅仅是2D.
有没有人知道以这种方式工作的文章或希尔伯特排序算法?或者一个关键的想法如何让"旋转"正确,哪种表现形式可供选择呢?特别是在更高维度...在2D中它是微不足道的; 1旋转+ y,+ x,而4是-y,-x(旋转和翻转).但是在更高的维度上,我猜这会变得更加棘手.
(结果当然应该与通过他们的hilbert顺序以足够大的精度对对象进行排序时相同;我只是想在不需要时节省计算完整表示的时间,并且必须管理它.人们保留一个相当昂贵的散列图"对象为希尔伯特数".)
对于Peano曲线和Z曲线应该可以采用类似的方法,并且可能更容易实现......我应该首先尝试这些方法(Z曲线已经在运行 - 它确实归结为类似于QuickSort的东西,使用适当的平均值/网格值作为虚拟枢轴并循环通过每次迭代的维度).
编辑:请参阅下文,了解我如何为Z和peano曲线解决它.它也适用于2D希尔伯特曲线.但是对于希尔伯特曲线我还没有旋转和反转.
导入包含大单元格的CSV文件时,Bulkloader会引发以下错误:
[ERROR ] Error in data source thread: field larger than field limit (131072)
Run Code Online (Sandbox Code Playgroud)
这是csv模块的常见问题,可以通过以下方式修复:
csv.field_size_limit(sys.maxint)
Run Code Online (Sandbox Code Playgroud)
如何让bulkloader执行此操作?
我有点困惑为什么我收到错误AttributeError:'module'对象没有属性'strptime'.当我在Python脚本中导入datetime并调用datetime.datetime.strptime(字符串,格式)时,一切正常,但是当我从datetime import datetime写入并调用datetime.strptime(字符串,格式)时,我的脚本会因上述错误而崩溃.我很好用import datetime并调用datetime.datetime,但我仍然很好奇为什么datetime import datetime在调用datetime.strptime(字符串,格式)时崩溃了.关于为什么会发生这种情况的任何想法?我的代码如下......
Bulkolader.yaml
python_preamble:
- import: re
- import: base64
- import: hs_transformers
- import: google.appengine.ext.db
- import: google.appengine.ext.bulkload.transform
- import: google.appengine.ext.bulkload.bulkloader_wizard
- import: google.appengine.api.datastore
transformers:
- kind: HBO
connector: csv
property_map:
- property: __key__
external_name: swfServerID
import_transform: hs_transformers.string
- property: IP_address
external_name: IP
import_transform: hs_transformers.string
- property: name
external_name: swfServer
import_transform: hs_transformers.swfServer
- property: checkin
external_name: clockStampOfLastCheckin
import_transform: hs_transformers.date_time
- property: update
external_name: clockStampOfLastUpdate
import_transform: hs_transformers.clockStampOfLastUpdate
- property: form_factor
external_name: formFactor
import_transform: hs_transformers.string
- property: …Run Code Online (Sandbox Code Playgroud) 我的帖子非常相似:App引擎批量加载器下载警告"__key__没有降序索引,执行串行下载"
我基本上想要做同样的事情.
基本上,我使用以下内容来下载我的一种类型的所有实例:
appcfg.py download_data --config_file=bulkloader.yaml --kind=ModelName --filename=ModelName.csv --application=MyAppid --url=http://MyAppid.appspot.com/remote_api
Run Code Online (Sandbox Code Playgroud)
如果类型的实例多于批量大小,那么我会收到此警告:
No descending index on __key__, performing serial download
Run Code Online (Sandbox Code Playgroud)
这导致我只下载大约6500个实体需要471.4秒(根据bulkloader工具完成后).这真的很慢,因为我还有其他4种甚至更大(大约15,000个实体)!
另外根据我的Mac的活动监视器,我只以大约24Kb /秒的速度下载,如bulkloader输出中的带宽所示:
[INFO ] Logging to bulkloader-log-20110514.011333
[INFO ] Throttling transfers:
[INFO ] Bandwidth: 250000 bytes/second
[INFO ] HTTP connections: 8/second
[INFO ] Entities inserted/fetched/modified: 20/second
[INFO ] Batch Size: 10
Run Code Online (Sandbox Code Playgroud)
1)如何摆脱这个警告"__key__没有下降索引,执行串行下载"以获得并行下载速度?
我认为我的问题的答案是添加降序索引.就像是:
<datastore-index kind="Game" ancestor="false" source="manual">
<property name="id" direction="desc"/>
</datastore-index>
Run Code Online (Sandbox Code Playgroud)
我尝试将其添加到datastore-indexes.xml文件中.
它已成功部署,但我查看了Google上管理门户网站上的数据存储区索引,但我没有看到它正在服务或正在构建.无论如何,为了它,我重申下面的命令,它仍然很慢......
我也尝试将相同的xml,但使用source ="auto",添加到datastore-indexes-auto.xml文件.但是,当我尝试部署我的eclipse抱怨时出现以下错误:
java.io.IOException: Error posting to URL: https://appengine.google.com/api/datastore/index/add?app_id=<My_APP_ID>&version=1&
400 …Run Code Online (Sandbox Code Playgroud) 我有一个连接到HBASE的map reduce作业,我无法弄清楚我遇到这个错误的位置:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.apache.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.IllegalArgumentException: java.net.URISyntaxException: Relative path in absolute URI: rsrc:hbase-common-0.98.1-hadoop2.jar
at org.apache.hadoop.fs.Path.initialize(Path.java:206)
at org.apache.hadoop.fs.Path.<init>(Path.java:172)
at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.findOrCreateJar(TableMapReduceUtil.java:703)
at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(TableMapReduceUtil.java:656)
at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addHBaseDependencyJars(TableMapReduceUtil.java:573)
at org.apache.hadoop.hbase.mapreduce.TableMapReduceUtil.addDependencyJars(TableMapReduceUtil.java:617)
at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:398)
at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:356)
at com.ancestry.bigtree.hfile.JsonToHFileDriver.run(JsonToHFileDriver.java:117)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
at com.ancestry.bigtree.hfile.JsonToHFileDriver.main(JsonToHFileDriver.java:69)
... 10 more
Caused by: java.net.URISyntaxException: Relative path in absolute URI: rsrc:hbase-common-0.98.1-hadoop2.jar
at java.net.URI.checkPath(URI.java:1804)
at java.net.URI.<init>(URI.java:752)
at org.apache.hadoop.fs.Path.initialize(Path.java:203)
Run Code Online (Sandbox Code Playgroud)
如果我没有Hbase库,那么工作运行正常.生成的相对路径在哪里?如何强制生成的路径是绝对的? …
MySqlBulkLoader可以用于事务吗?我没有看到将事务显式附加到加载器实例的方法.还有另外一种方法吗?
我正在运行以下两个命令:
appcfg.py download_data --kind=Journal --url=http://appname.appspot.com/_ah/remote_api --filename=Journals.sql3
appcfg.py upload_data --url=http://localhost:8080/_ah/remote_api --kind=Journal --filename=Journals.sql3
Run Code Online (Sandbox Code Playgroud)
第一个成功下载以下文件中的数据:bulkloader-results-20130718.112127.sql3 Journals.sql3没有任何错误.当我在记事本中打开文件时,看起来数据就在那里.
第二个每次运行时都会打开一个随机的新空文件(例如bulkloader-progress-20130718.115805.sql3).然后它给出以下错误日志:
INFO 2013-07-18 11:54:48,930 module.py:595] default: "POST /_ah/remote_api HTTP/1.1" 200 96
INFO 2013-07-18 11:58:17,563 module.py:595] default: "GET /_ah/remote_api?rtok=36123921049 HTTP/1.1" 200 64
INFO 2013-07-18 11:58:20,609 module.py:595] default: "GET /_ah/remote_api HTTP/1.1" 200 37
ERROR 2013-07-18 09:58:20,618 handler.py:384] Exception while handling service_name: "datastore_v4"
method: "AllocateIds"
request: ""
Traceback (most recent call last):
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\remote_api\handler.py", line 380, in post
response_data = self.ExecuteRequest(request)
File "C:\Program Files (x86)\Google\google_appengine\google\appengine\ext\remote_api\handler.py", line 411, in …Run Code Online (Sandbox Code Playgroud) 我有一些类似的数据
var records = [
{Name: '', Id: 1},
{Name: '', Id: 2},
{Name: '', Id: 3},
{Name: '', Id: 4},
{Name: '', Id: 5},
{Name: '', Id: 6}
];
Run Code Online (Sandbox Code Playgroud)
记录数组中可能有数千个项目......
问题1:我们可以创建一个存储过程来接受mysql中的对象数组吗?
问题2:有没有办法用Node JS将这些数据批量插入mysql?
从一个空的数据存储区,我能够自动生成一个bulkloader.yaml文件.它只包含python_preamble,但该transformers部分是空的.
python_preamble:
- import: google.appengine.ext.bulkload.transform
- import: google.appengine.ext.bulkload.bulkloader_wizard
- import: my_own_transformers
- import: data_models # This is where the SomeData class is defined.
# some more imports here
Run Code Online (Sandbox Code Playgroud)
然后根据文档中的示例,我需要为CSV中的每个列定义属性映射:
transformers:
- kind: SomeData
connector: csv
property_map:
- property: date
import_transform: transform.some_undocumented_function
Run Code Online (Sandbox Code Playgroud)
我的理解是,定义为的函数import_transform会将普通的CSV字符串转换为值得数据存储区的Property Class.我想了解变换是如何工作的,所以我认为我有两种选择.
库参考在哪里google.appengine.ext.bulkload.transform?我想知道如何使用transform.some_undocumented_function,以及所有其他transform.some_other_undocumented_transformers
你可以从我python_preamble看到我- import: my_own_transformers.在该模块中,我定义了一个transform_date采用ISO日期字符串的函数,并将其2001-01-01转换为适合的类型db.DateProperty().如果我的概念是正确的,我可以使用:
property_map: - property: date import_transform: my_own_transforms.transform_date
我正在尝试将C#代码中的SQLXMLBulkLoader4用于SQL 2008数据库.但由于某些原因,尽管没有抛出任何错误,它根本不会插入任何行.我已经使用了bulkloads自己的ErrorLog文件,(检查可能不会导致崩溃的任何错误),但是没有报告错误.
我有一个从供应商(基本上是产品列表)下载的XML文件,我写了一个XSD来匹配我们的数据库的字段.没有其他任何东西写入这些特定的表,没有其他使用这些文件.
我的BulkLoad代码如下所示(我X实际连接字符串值):
public void Bulkload(string schemaFile, string xmlFile, string source)
{
SQLXMLBULKLOADLib.SQLXMLBulkLoad4 bulkload = new SQLXMLBULKLOADLib.SQLXMLBulkLoad4();
try
{
bulkload.ConnectionString = "Provider=sqloledb;server=X;database=X;uid=X;pwd=X";
bulkload.ErrorLogFile = k_ArticleInfoDirectory + source + "BulkLoadError.log";
bulkload.KeepIdentity = false;
bulkload.Execute(schemaFile, xmlFile);
}
catch (Exception e)
{
Console.WriteLine("Fel i BL: " + e);
throw;
}
finally
{
bulkload = null;
}
}
Run Code Online (Sandbox Code Playgroud)
XML看起来像这样(剥离,下面的所有内容只是几个产品领域,然后是更多产品):
<?xml version="1.0" encoding="utf-8"?>
<GetProductsResult xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Status xmlns="http://schemas.servicestack.net/types">
<Code>0</Code>
<Message>Ok</Message>
</Status>
<NumberOfProducts xmlns="http://schemas.servicestack.net/types">9826</NumberOfProducts>
<Products xmlns="http://schemas.servicestack.net/types">
<Product>
<ProductID>1000002</ProductID>
<CreatedDate>2011-11-24 15:54</CreatedDate>
<UpdatedDate>2011-11-24 15:54</UpdatedDate>
<Title>Vi tolererar inga …Run Code Online (Sandbox Code Playgroud) bulkloader ×10
java ×3
bulkinsert ×2
mysql ×2
python ×2
algorithm ×1
c# ×1
hadoop ×1
hbase ×1
import ×1
importerror ×1
mapreduce ×1
node-mysql ×1
node.js ×1
objectify ×1
reference ×1
sorting ×1
transactions ×1
transform ×1
xml ×1
xsd ×1