标签: bulkloader

希尔伯特按分而治之算法排序?

我正在尝试按照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希尔伯特曲线.但是对于希尔伯特曲线我还没有旋转和反转.

java sorting algorithm hilbert-curve bulkloader

21
推荐指数
2
解决办法
2345
查看次数

Bulkloader CSV大小错误

导入包含大单元格的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执行此操作?

python google-app-engine bulkloader

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

AttributeError:'module'对象没有属性'strptime' - 可能的Bug?

我有点困惑为什么我收到错误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)

python import google-app-engine importerror bulkloader

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

Java Google App Engine批量加载程序下载警告"__key__没有降序索引,执行串行下载"

可能重复:
App引擎批量加载程序下载警告" 密钥没有降序索引,执行串行下载"

我的帖子非常相似: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)

java google-app-engine bulkloader objectify

7
推荐指数
0
解决办法
432
查看次数

hadoop java.net.URISyntaxException:绝对URI中的相对路径:rsrc:hbase-common-0.98.1-hadoop2.jar

我有一个连接到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库,那么工作运行正常.生成的相对路径在哪里?如何强制生成的路径是绝对的? …

java hadoop hbase mapreduce bulkloader

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

MySqlBulkLoader可以用于事务吗?

MySqlBulkLoader可以用于事务吗?我没有看到将事务显式附加到加载器实例的方法.还有另外一种方法吗?

mysql transactions bulkinsert bulkloader

6
推荐指数
1
解决办法
776
查看次数

Google应用引擎批量加载程序会在上传时打开空文件

我正在运行以下两个命令:

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)

google-app-engine development-environment bulkloader

6
推荐指数
1
解决办法
673
查看次数

使用Node JS将记录数组插入mysql

我有一些类似的数据

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?

mysql bulkinsert node.js bulkloader node-mysql

6
推荐指数
1
解决办法
7562
查看次数

Google App Engine批量处理器的参考页面在哪里转换?

从一个空的数据存储区,我能够自动生成一个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.我想了解变换是如何工作的,所以我认为我有两种选择.

  1. 库参考在哪里google.appengine.ext.bulkload.transform?我想知道如何使用transform.some_undocumented_function,以及所有其他transform.some_other_undocumented_transformers

  2. 你可以从我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

google-app-engine reference transform bulkloader

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

SQLXML BulkLoader没有抛出任何错误但没有插入数据

我正在尝试将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)

c# xml xsd bulkloader

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