GVKun编程网logo

nifi ExecuteScript processor python 和 groovy 语言实现(no alternatives for python)

17

关于nifiExecuteScriptprocessorpython和groovy语言实现和noalternativesforpython的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于a

关于nifi ExecuteScript processor python 和 groovy 语言实现no alternatives for python的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于android studio 出现 Error:Execution failed for task '':app:processDebugResources''. > 的问题、AndroidStudio3.0 Error:Execution failed for task '':app:processDebugResources''.、Android编译程序出现Execution failed for task '':app:processDebugResources''.、Chrome Android 上 createScriptProcessor 的奇怪行为等相关知识的信息别忘了在本站进行查找喔。

本文目录一览:

nifi ExecuteScript processor python 和 groovy 语言实现(no alternatives for python)

nifi ExecuteScript processor python 和 groovy 语言实现(no alternatives for python)

研究了几天 nifi 的 ExecuteScript processor,在同事的帮助下终于调试通过了,记录 python 和 groovy 语言的不同实现:

python:

import json
import java.io
from org.apache.commons.io import IOUtils
from java.nio.charset import StandardCharsets
from org.apache.nifi.processor.io import StreamCallback
from org.apache.nifi.processors.script import ExecuteScript


class PyStreamCallback(StreamCallback):
    def __init__(self):
        pass

    def process(self, inputStream, outputStream):
        text = IOUtils.toString(inputStream, StandardCharsets.UTF_8)
        obj=json.load(text)
        newObj = {
            "Source": "NiFi",
            "ID": "python",
            "Name": "test"
            "meta_data": obj[''meta'']
        }
        outputStream.write(bytearray(json.dumps(newObj, indent=4).encode(''utf-8'')))


flowFile = session.get()
if flowFile != None:
    flowFile = session.write(flowFile, PyStreamCallback())
    session.transfer(flowFile, ExecuteScript.REL_SUCCESS)
else:
    pass

 

 

groovy:

import org.apache.commons.io.IOUtils
import java.nio.charset.*

def flowFile = session.get();

def slurper = new groovy.json.JsonSlurper()
if (flowFile == null) {
    return;
}
def flag=false
flowFile = session.write(flowFile,
    { inputStream, outputStream ->
            def text = IOUtils.toString(inputStream,StandardCharsets.UTF_8)    
            def obj = slurper.parseText(text)
            flag=false
            def bbdErrorLog= obj.bbd_error_log
            def bbdErrorLogs=bbdErrorLog.split("code\":")
            if(bbdErrorLogs.size()==2){
                if (bbdErrorLog.startsWith("[{\"message")){
                    errorLogCode=Integer.parseInt(bbdErrorLogs[1].split("}")[0])
                }else{
                    errorLogCode=Integer.parseInt(bbdErrorLogs[1].split(",")[0])
                }                
                if (errorLogCode==2000002){
                    pattern= ~"吊销 | 注销"
                    def enterprise_status=obj.enterprise_status
                    def company_type=obj.company_type
                    if (company_type=="农民专业合作社"||company_type=="集体所有制"||company_type=="股份合作制"){
                        flag=true
                    }else if(enterprise_status=~pattern){ 
                        flag=true
                    }
                }else if (errorLogCode==2000302){
                    flag=true
                }else if (errorLogCode==1000202){
                    pattern= ~"吊销 | 注销"
                    def enterprise_status=obj.enterprise_status
                    if(enterprise_status=~pattern){ 
                        flag=true
                    }
                }else if (errorLogCode==1001402){
                    pattern= ~/[\u4e00-\u9fa5]/
                    def regOrg=obj.regorg
                    if(regOrg==~pattern&&regOrg.length()<20){
                        flag=true
                    }
                }
            }else{
                errorLogList=[1000101,1000401,1000501,1000601,1001201,1001301,1001401,2000002]                
                isFind=true
                for (field in bbdErrorLogs){
                    if (field=="[{\""||field.startsWith("[{\"message\"")){
                        continue
                    }
                    int num = Integer.parseInt(field.substring(0,7))
                    if (errorLogList.find{it == num}==null){
                        isFind=false
                    }
                }
                if (isFind){
                    pattern= ~"吊销 | 注销"
                    def enterprise_status=obj.enterprise_status
                    if(enterprise_status=~pattern){ 
                        flag=true
                    }
                }
                
            }
            def builder = new groovy.json.JsonBuilder()
            builder.call(obj)
            outputStream.write(builder.toPrettyString().getBytes(StandardCharsets.UTF_8)) 
    } as StreamCallback)

    if(flag){
        flowFile = session.putAttribute(flowFile, "etl_flag", "DATA_MATCHED")
    }else{
        flowFile = session.putAttribute(flowFile, "etl_flag", "DATA_NOT_MATCH")
    }

session.transfer(flowFile, ExecuteScript.REL_SUCCESS)

android studio 出现 Error:Execution failed for task '':app:processDebugResources''. > 的问题

android studio 出现 Error:Execution failed for task '':app:processDebugResources''. > 的问题

打开命令窗口 cd 到当前项目路径
window 运行 gradlew assembleDebug --info
linux 运行 ./gradlew assembleDebug --info
查看 error,一般就知道缺少哪个素材了

修改回答

AndroidStudio3.0 Error:Execution failed for task '':app:processDebugResources''.

AndroidStudio3.0 Error:Execution failed for task '':app:processDebugResources''.

android studio 

Information:Gradle tasks [:app:assembleDebug]

app\build\intermediates\manifests\full\debug\AndroidManifest.xml

Error:(27) error: unknown element <category> found.
Error:(27) unknown element <category> found.
Error:java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
Error:Execution failed for task '':app:processDebugResources''.
> Failed to execute aapt
Information:BUILD FAILED in 10s
Information:6 errors
Information:0 warnings

Information:See complete output in console

 

解决方法 :

add this code in gradle.properties in the root project:

org.gradle.jvmargs=-Xmx1536m
android.enableAapt2=false

 

Android编译程序出现Execution failed for task '':app:processDebugResources''.

Android编译程序出现Execution failed for task '':app:processDebugResources''.

Android编译程序出现org.gradle.api.tasks.TaskExecutionException: Execution failed for task '':app:processDebugResources''.错误

如何处理
打开AndroidStudio的terminal,在命令行输入命令:gradlew compileDebugSource --stacktrace -infogradlew assembleDebug --info

Chrome Android 上 createScriptProcessor 的奇怪行为

Chrome Android 上 createScriptProcessor 的奇怪行为

如何解决Chrome Android 上 createScriptProcessor 的奇怪行为?

我在 Chrome Android(今天的最新版本)上发现了 createscriptprocessor 的奇怪行为。

因此,我创建了测量上下文频率的小型测试页面。 在我的一些设备(小米 Mi Pad 2 和小米 Mi Mix 2)上,测试显示了不同缓冲区大小(从 256 到 16384)的非常奇怪的结果。例如:

  • 缓冲区大小 = 256。声明的频率 = 48000。测量的频率 = 30270。
  • 缓冲区大小 = 1024。声明的频率 = 48000。测量的频率 = 35533。
  • 缓冲区大小 = 16384。声明的频率 = 48000。测量的频率 = 46886。

下面列出的测试页代码(同一页位于 my hosting,因此您可以使用您的设备对其进行测试):

<body>
    <textarea id=field cols=32 rows=4></textarea>
    <br>
    Buffer size <input id=buf_size value=4096>
    <br>
    <input type=button value=Start onclick="test_start()">
</body>
<script>
var audCtx;
var recorder;
var start_time;
var buffer_counter = 0;


function test_start()
{
    audCtx = new (window.AudioContext || window.webkitaudiocontext)();
    navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
    navigator.getUserMedia({audio: true,video: false},function(s){rec_init(s)},function(e){console.log("Media init error: " + e);});
    setInterval("stat()",500);
}


function stat()
{
    if (recorder)
    {
        var curr_time = new Date().getTime() - start_time;
        var str = "Declared freq:\t" + recorder.context.sampleRate + ''\n'';
        str += "Measured freq:\t" + parseInt(1000 * (buffer_counter * buf_size.value / curr_time)) + ''\n'';
        str += "Buffer counter:\t" + buffer_counter + ''\n'';
        str += "Measure time:\t" + (curr_time / 1000);
        field.value = str;
    }
}


function rec_init(s)
{
    src = audCtx.createmediastreamsource(s); 
    recorder = audCtx.createscriptprocessor(buf_size.value,1,1);
    start_time = new Date().getTime();

    recorder.onaudioprocess = function(d)
    {
        buffer_counter++;
    }

    src.connect(recorder);

    recorder.connect(audCtx.destination);
}
</script>

所以,测试的想法很简单:Freq =(onaudioprocess 事件的总数)*(缓冲区大小)/(总测试时间)

使用相同设备上的其他浏览器,经过 1 分钟测试后,我测得的频率约为 48000 +/- 50 Hz。

同一 Chrome Android 上的其他设备显示良好的结果。 所有桌面浏览器也显示出良好的效果。

我很奇怪,看起来像性能问题(频繁的事件意味着更多的负载),但 Chrome 分析器在测试期间显示 90% 空闲时间。

有什么问题?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

今天关于nifi ExecuteScript processor python 和 groovy 语言实现no alternatives for python的介绍到此结束,谢谢您的阅读,有关android studio 出现 Error:Execution failed for task '':app:processDebugResources''. > 的问题、AndroidStudio3.0 Error:Execution failed for task '':app:processDebugResources''.、Android编译程序出现Execution failed for task '':app:processDebugResources''.、Chrome Android 上 createScriptProcessor 的奇怪行为等更多相关知识的信息可以在本站进行查询。

本文标签:

上一篇使用 ReentrantLock(使用傀儡消耗降低多少)

下一篇Zeroc Ice 学习笔记 --Docker 部署服务(docker部署odoo)