小编Rya*_*ack的帖子

删除Airflow Scheduler日志

我正在使用Docker Apache airflow VERSION 1.9.0-2(https://github.com/puckel/docker-airflow).

调度程序生成大量日志,文件系统将快速耗尽空间,因此我尝试以编程方式删除由airflow创建的调度程序日志,可在调度程序容器中找到(/ usr/local/airflow/logs/scheduler )

我已经设置了所有这些维护任务:https: //github.com/teamclairvoyant/airflow-maintenance-dags

但是,这些任务仅删除工作服务器上的日志,而调度程序日志位于调度程序容器中.

我还设置了远程日志记录,将日志发送到S3,但正如本文中提到的删除气流任务日志中所述,此设置不会阻止气流写入本地计算机.

此外,我还尝试在worker和scheduler之间创建一个共享命名卷,如此处所述Docker Compose - 在多个容器之间共享命名卷.但是,我在worker中收到以下错误:

ValueError: Unable to configure handler 'file.processor': [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler'

和调度程序中的以下错误:

ValueError: Unable to configure handler 'file.processor': [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler/2018-04-11'

那么,人们如何删除调度程序日志?

docker docker-compose airflow docker-volume airflow-scheduler

11
推荐指数
2
解决办法
4945
查看次数

使用Dataflow进行图像预处理

任务:我将运行一个ETL作业,该作业将从GCS中提取TIFF图像,使用OpenCV + Tesseract等开源计算机视觉工具的组合将这些图像转换为文本,并最终将数据加载到BigQuery中

问题:我正在尝试使用Dataflow来执行ETL作业,因为我有数百万个图像(每个图像是一个单独的文件/ blob),我想扩展到数百台机器.但是,我遇到了关于下载图像的最佳方法的Dataflow(将在下面更详细地描述)的一些问题.

问题:最终我试图确定:

1)数据流是否是执行此操作的最佳解决方案?我考虑过的替代方案是在大型机器上运行多线程作业.我还应该考虑其他替代方案吗?

2)如果数据流是最佳解决方案,那么我应该如何专门处理下载数百万张图像(以便我可以通过转换运行它们)?

技术挑战:

以下帖子推荐的解决方案建议beam.io.gcp.gcsio.GcsIO().open(filepath, 'r')在DoFn中使用从GCS下载图像.
我试图沿着这条路走下去,beam.io.gcp.gcsio.GcsIO().open(filepath, 'r')但是,我无法打开图像.这个问题在这里描述:IO.BufferReader问题.

使用时,DirectRunner我可以使用此客户端api下载图像文件from google.cloud import storage,我可以打开并预处理图像没问题.但是,在使用数据流运行器时,我遇到了依赖性问题AttributeError: 'module' object has no attribute 'storage'.

话虽如此,如果Dataflow是最佳解决方案,那么下载和处理数百万张图像的最佳方法是什么?

python image-processing google-cloud-dataflow apache-beam

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

在Spark Scala应用程序中使用Log4J2异步日志记录

问题:在Spark本地模式下初始化SparkContext后,我无法观察到Log4J2的异步功能。

SBT中的Log4j2依赖关系:

  "com.lmax" % "disruptor" % "3.3.5",
  "org.apache.logging.log4j" % "log4j-api" % "2.8.2",
  "org.apache.logging.log4j" % "log4j-core" % "2.8.2",
  "org.apache.logging.log4j" %% "log4j-api-scala" % "2.8.2"
Run Code Online (Sandbox Code Playgroud)

Log4j2配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="debug">
<Appenders>
    <Console name="Console-Appender" target="SYSTEM_OUT">
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>>
        </PatternLayout>
    </Console>
    <File name="File-Appender" fileName="logs/xmlfilelog.log" >
        <PatternLayout>
            <pattern>
                [%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n
            </pattern>
        </PatternLayout>
    </File>
</Appenders>
<Loggers>
    <Logger  name="guru.springframework.blog.log4j2async" level="debug">
        <AppenderRef ref="File-Appender"/>he preceding c
    </Logger>
    <Root level="debug">
        <AppenderRef ref="Console-Appender"/>
    </Root>
</Loggers>
Run Code Online (Sandbox Code Playgroud)

我在IntelliJ中设置以下系统属性

-DLog4jContextSelector=org.apache.logging.log4j.core.async.AsyncLoggerContextSelector
Run Code Online (Sandbox Code Playgroud)

为了测试异步行为,在初始化SparkContext之前和之后,我运行了以下代码段:

val …
Run Code Online (Sandbox Code Playgroud)

log4j sbt log4j2 apache-spark spark-streaming

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

从 Python io.BufferedReader 类的实例读取/打开图像

我正在努力从 Python 类的实例中正确打开 TIFF 图像io.BufferedReader。我使用下面的库从 GCS 路径下载图像,但我似乎无法使用传统工具打开图像。

# returns the <_io.BufferedReader>
file = beam.io.gcp.gcsio.GcsIO().open("<GCS_PATH>", 'r')

from PIL import Image    
img = Image.open(file.read()) <---- Fails with "TypeError: embedded NUL character"

img = Image.open(file.raw) <--- Fails when any operations are performed with "IOError(err)"
Run Code Online (Sandbox Code Playgroud)

除了 PIL 之外,我对其他库持开放态度。

更新

以下也失败:

img = Image.open(file)
Run Code Online (Sandbox Code Playgroud)

它失败并出现 IOError,指出tempfile.tif: Cannot read TIFF header.

python opencv image python-imaging-library google-cloud-dataflow

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