小编aco*_*aco的帖子

将 pyspark 脚本提交到远程 Spark 服务器?

这可能是一个非常愚蠢的问题,但我无法通过 Google 找到答案。我编写了一个简单的 pyspark ETL 脚本,该脚本读取 CSV 并将其写入 Parquet,如下所示:

spark = SparkSession.builder.getOrCreate()
sqlContext = SQLContext(spark.sparkContext)
df = sqlContext.read.csv(input_filename)
df.write.parquet(output_path)
Run Code Online (Sandbox Code Playgroud)

为了运行它,我在 Docker 中启动了一个本地 Spark 集群:

$ docker run --network=host jupyter/pyspark-notebook
Run Code Online (Sandbox Code Playgroud)

我运行 Python 脚本,它连接到这个本地 Spark 集群,一切都按预期工作。

现在我想在远程 Spark 集群 (AWS EMR) 上运行相同的脚本。我可以在初始化 Spark 上下文时在某处指定一个远程 IP 地址吗?还是我误解了 Spark 的工作原理?

amazon-emr apache-spark pyspark

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

S3 中的最佳最大 Parquet 文件大小

我正在尝试计算在 S3 上对 Parquet 数据进行分区时的最佳文件大小。AWS 建议避免文件小于 128MB。但是否也有建议的最大文件大小?

Databricks 建议文件大小应在 1GB 左右,但我不清楚这是否仅适用于 HDFS。我知道最佳文件大小取决于 HDFS 块大小。然而,S3 没有任何块大小的概念。

有什么想法吗?

amazon-s3 parquet

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

电子商务网站结账建模

通常,当客户点击电子商务网站上的“结账”按钮时,他们会经历如下结账流程:

  1. 更新/确认购物车中的产品数量
  2. 输入地址,选择送货方式
  3. 输入信用卡详细信息
  4. 查看所有订单详情,点击“确认”付款
  5. 带有订单号的“谢谢”页面

客户在结帐的第 4 步单击“确认”后,我们通常希望创建一些数据库对象,包括:

  • Order
  • Invoice(与相应的 有关系Order
  • Payment(与相应的 有关系Invoice

我的第一个想法是应该发生这样的事情:

  1. Order使用订单详细信息创建一个对象
  2. 创建一个Invoice包含订单总成本的对象
  3. 创建一个Payment对象status=PENDING并尝试向信用卡收费
  4. 如果收费成功,更新Paymentstatus=SUCCESS并将客户重定向到“谢谢”页面
  5. 如果扣款失败,系统更新Paymentstatus=FAIL与回报客户步骤4的错误消息显示

但是,这个流程有一个问题:如果收费失败,客户返回第4步,如果再次点击“确认”重新尝试付款OrderInvoice则会生成一个副本。

为避免这种情况,我们可以修改此流程以仅创建一个新流程OrderInvoice如果它们尚不存在。然而,这样做的问题是用户可能会点击回到第 1 步,更改订单,然后再次尝试付款。在这种情况下,OrderInvoice对象将不正确,因为顺序已更改。

所以为了避免这种情况,我们可以改为更新现有的OrderInvoice如果它们已经存在,但这现在看起来过于复杂,并且也打破了发票应该是不可变的通用约定。

对此建模的最佳方法是什么?

language-agnostic database-design e-commerce

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

芹菜4.0.0:没有这样的运输:django

我遵循Celery 4.0.0的"Django的第一步"教程:http: //docs.celeryproject.org/en/latest/django/first-steps-with-django.html

这一切都按预期工作.但是,如果我尝试将传输从AMQP更改为Django ORM,则将其添加到以下结尾settings.py:

CELERY_BROKER_URL = 'django://'
Run Code Online (Sandbox Code Playgroud)

然后当我运行worker process(celery -A proj worker)时,我收到一个错误:

Traceback (most recent call last):
  File "/home/ac/src/proj/.pyenv/bin/celery", line 11, in <module>
    sys.exit(main())
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/__main__.py", line 14, in main
    _main()
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 326, in main
    cmd.execute_from_commandline(argv)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 488, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/base.py", line 278, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 480, in handle_argv
    return self.execute(command, argv)
  File "/home/ac/src/proj/.pyenv/local/lib/python2.7/site-packages/celery/bin/celery.py", line 412, in execute
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0]) …
Run Code Online (Sandbox Code Playgroud)

python django celery

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

$(...).tagsinput不是一个函数

我必须遗漏一些简单的东西,但我看不到它.我正在使用Bootstrap tagsinput插件,我试图按照这里的一些例子:http: //bootstrap-tagsinput.github.io/bootstrap-tagsinput/examples/

这是我的代码:

<html>
  <head>
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/bootstrap.tagsinput/0.4.2/bootstrap-tagsinput.css" />
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/bootstrap.tagsinput/0.4.2/bootstrap-tagsinput.min.js"></script>
  </head>
  <body>
    <input id="cities" class="form-control" value="New York,London" data-role="tagsinput" type="text">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    <script>
      $(function() {
        $('#cities').tagsinput({
          maxTags: 3
        });
      });
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我收到以下Javascript错误:

tagsinput.html:15 Uncaught TypeError: $(...).tagsinput is not a function
Run Code Online (Sandbox Code Playgroud)

我尝试删除这个SO答案中的data-role="tagsinput"建议,但输入变为常规文本框,但仍然会发生异常.

我究竟做错了什么?

javascript jquery twitter-bootstrap bootstrap-tags-input

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

spyne SOAP服务器的Hello world示例

我正在尝试几个不同的Python SOAP服务器库,我似乎无法让spyne的'hello world'示例工作:https: //github.com/arskom/spyne/blob/master/examples/ helloworld_soap.py

当我运行它时,它启动一个SOAP服务器,我可以在浏览器中成功查看WSDL http://localhost:7789/?wsdl.但是,当我尝试连接suds客户端时,我得到一个例外:

Python 2.7.3 (default, Aug  1 2012, 05:14:39) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from suds.client import Client
>>> c = Client('http://localhost:7789/?wsdl')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/client.py", line 112, in __init__
    self.wsdl = reader.open(url)
  File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/reader.py", line 152, in open
    d = self.fn(url, self.options)
  File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/wsdl.py", line 158, in __init__
    self.resolve()
  File "/home/acordiner/ve/local/lib/python2.7/site-packages/suds/wsdl.py", …
Run Code Online (Sandbox Code Playgroud)

python soap suds spyne

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