nifi-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Madhukar Thota <madhukar.th...@gmail.com>
Subject Re: Lua usage in ExecuteScript Processor
Date Wed, 04 May 2016 15:39:05 GMT
Hey Matt,

Do you know how to call java classes in lua?

i am trying to call java class org.apache.commons.io.IOUtils  like this:


*local io = luajava.bindClass("org.apache.commons.io.IOUtils")*

but nifi execurescript processor is complaning class not found.

failed to process session due to org.luaj.vm2.LuaError: script:98 vm
error: java.lang.ClassNotFoundException:
org.apache.commons.io.IOUtils: org.luaj.vm2.LuaError: script:98 vm
error: java.lang.ClassNotFoundException: org.apache.commons.io.IOUtils



Any help here?

On Thu, Apr 21, 2016 at 10:58 AM, Madhukar Thota <madhukar.thota@gmail.com>
wrote:

> Made some progess on loading the lua files from modules directory. In my
> case all my lua files and .so files are in modules diretory. I placed the
> directory in nifi installation folder.
>
> Eg: lua_modules/common_log_format.lua
>
> in my script i am calling the luascript as follows:
>
> local clf = *require 'lua_modules.common_log_format'*
>
> *It is reading the lua script without any issue, now the problem is **common_log_format.lua
> is dependent on lpeg module which is .so file ( lpeg.so). The question is,
> Can we read .so files in nifi luaj libarary. If so how can i parse .so
> files?*
>
>
> On Wed, Apr 20, 2016 at 5:21 PM, Madhukar Thota <madhukar.thota@gmail.com>
> wrote:
>
>> I am trying to read the lua file this way, but its not working. How to
>> read the lua files from module directory and use it in execution?
>>
>> luajava.LuaState = luajava.LuaStateFactory.newLuaState()
>>
>>
>> luajava.LuaState.openLibs()
>> luajava.LuaState.LdoFile("common_log_format.lua");
>>
>>
>> On Wed, Apr 20, 2016 at 4:29 PM, Madhukar Thota <madhukar.thota@gmail.com
>> > wrote:
>>
>>> Thanks Matt. This will be helpful to get started. I will definitely
>>> contribute back to community once i have working script. One more question,
>>> Can i call the lua modues in the script with require statement like this local
>>> lpeg = require "lpeg"?
>>>
>>> -Madhu
>>>
>>>
>>>
>>> On Wed, Apr 20, 2016 at 3:11 PM, Matt Burgess <mattyb149@gmail.com>
>>> wrote:
>>>
>>>> Madhu,
>>>>
>>>> I know very little about Lua, so I haven't tried making a Lua version
>>>> of my JSON-to-JSON scripts/blogs (funnifi.blogspot.com), but here's
>>>> something that works to get you started. The following Luaj script creates
>>>> a flow file, writes to it, adds an attribute, then transfers it to success.
>>>> Hopefully you can use your Lua scripts inline by calling their functions
>>>> and such from the OutputStreamCallback proxy (the process method below).
If
>>>> you get something working and would like to share, I would very much
>>>> appreciate it!
>>>>
>>>> local writecb =
>>>> luajava.createProxy("org.apache.nifi.processor.io.OutputStreamCallback",
{
>>>> process = function(outputStream)
>>>> outputStream:write("This is flow file content from Lua")
>>>> end
>>>> })
>>>> flowFile = session:create()
>>>> flowFile = session:putAttribute(flowFile, "lua.attrib", "Hello from
>>>> Lua!")
>>>> flowFile = session:write(flowFile, writecb)
>>>> session:transfer(flowFile, REL_SUCCESS)
>>>>
>>>>
>>>> Regards,
>>>> Matt
>>>>
>>>> On Tue, Apr 19, 2016 at 1:15 PM, Madhukar Thota <
>>>> madhukar.thota@gmail.com> wrote:
>>>>
>>>>> Friends,
>>>>>
>>>>> Can anyone share an sample example on how to use Lua in ExecuteScript
>>>>> Processor? We have bunch of lua scripts which we would like to use for
data
>>>>> processing.
>>>>>
>>>>> Any help is appreciated.
>>>>>
>>>>> Thanks
>>>>> Madhu
>>>>>
>>>>
>>>>
>>>
>>
>

Mime
View raw message