mirror of
https://github.com/apache/zeppelin
synced 2026-05-24 09:38:26 +00:00
This is the initial PR for an R Interpreter for Zeppelin. There's still some work to be done (e.g., tests), but its useable, it brings to Zeppelin features from R like its library of statistics and machine learning packages, as well as advanced interactive visualizations. So I'd like to open it up for others to comment and/or become involved. Summary: - There are two interpreters, one emulates a REPL, the other uses knitr to weave markdown and formatted R output. The two interpreters share a single execution environment. - Visualisations: Besides R's own graphics, this also supports interactive visualizations with googleVis and rCharts. I am working on htmlwidgets (almost done) with the author of that package, and a next-step project is to get Shiny/ggvis working. Sometimes, a visualization won't load until the page is reloaded. I'm not sure why this is. - Licensing: To talk to R, this integrates code forked from rScala. rScala was released with a BSD-license option, and the author's permission was obtained. - Spark: Getting R to share a single spark context with the Spark interpreter group is going to be a project. For right now, the R interpreters live in their own "r" interpreter group, and new spark contexts are created on startup. - Zeppelin Context: Not yet integrated, in significant part because there's no ZeppelinContext to talk to until it lives in the Spark interpreter group. - Documentation: A notebook is included that demonstrates what the interpreter does and how to use it. - Tests: Working on it... P.S.: This is my first PR on a project of this size; let me know what I messed up and I'll try to fix it ASAP. Author: Amos Elb <amos.elberg@me.com> Author: Amos B. Elberg <amos.elberg@me.com> Closes #208 from elbamos/rinterpreter and squashes the following commits:ffc1a25[Amos Elb] Fix rat issuea08ec5b[Amos B. Elberg] R Interpreter
146 lines
7.5 KiB
XML
146 lines
7.5 KiB
XML
<!--
|
|
~ Licensed to the Apache Software Foundation (ASF) under one or more
|
|
~ contributor license agreements. See the NOTICE file distributed with
|
|
~ this work for additional information regarding copyright ownership.
|
|
~ The ASF licenses this file to You under the Apache License, Version 2.0
|
|
~ (the "License"); you may not use this file except in compliance with
|
|
~ the License. You may obtain a copy of the License at
|
|
~
|
|
~ http://www.apache.org/licenses/LICENSE-2.0
|
|
~
|
|
~ Unless required by applicable law or agreed to in writing, software
|
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
~ See the License for the specific language governing permissions and
|
|
~ limitations under the License.
|
|
-->
|
|
<!-- NOTE: This was taken and adapted from Apache Spark. -->
|
|
|
|
<!-- If you wish to turn off checking for a section of code, you can put a comment in the source
|
|
before and after the section, with the following syntax: -->
|
|
<!-- // scalastyle:off -->
|
|
<!-- ... -->
|
|
<!-- // naughty stuff -->
|
|
<!-- ... -->
|
|
<!-- // scalastyle:on -->
|
|
|
|
<scalastyle>
|
|
<name>Scalastyle standard configuration</name>
|
|
<check level="error" class="org.scalastyle.file.FileTabChecker" enabled="true"></check>
|
|
<!-- <check level="error" class="org.scalastyle.file.FileLengthChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="maxFileLength"><![CDATA[800]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<check level="error" class="org.scalastyle.file.HeaderMatchesChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="header"><![CDATA[/*
|
|
* Licensed to the Apache Software Foundation (ASF) under one
|
|
* or more contributor license agreements. See the NOTICE file
|
|
* distributed with this work for additional information
|
|
* regarding copyright ownership. The ASF licenses this file
|
|
* to you under the Apache License, Version 2.0 (the
|
|
* "License"); you may not use this file except in compliance
|
|
* with the License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/]]></parameter>
|
|
</parameters>
|
|
</check>
|
|
<check level="error" class="org.scalastyle.scalariform.SpacesAfterPlusChecker" enabled="true"></check>
|
|
<check level="error" class="org.scalastyle.file.WhitespaceEndOfLineChecker" enabled="false"></check>
|
|
<check level="error" class="org.scalastyle.scalariform.SpacesBeforePlusChecker" enabled="true"></check>
|
|
<check level="error" class="org.scalastyle.file.FileLineLengthChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="maxLineLength"><![CDATA[100]]></parameter>
|
|
<parameter name="tabSize"><![CDATA[2]]></parameter>
|
|
<parameter name="ignoreImports">true</parameter>
|
|
</parameters>
|
|
</check>
|
|
<check level="error" class="org.scalastyle.scalariform.ClassNamesChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter>
|
|
</parameters>
|
|
</check>
|
|
<check level="error" class="org.scalastyle.scalariform.ObjectNamesChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="regex"><![CDATA[[A-Z][A-Za-z]*]]></parameter>
|
|
</parameters>
|
|
</check>
|
|
<check level="error" class="org.scalastyle.scalariform.PackageObjectNamesChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="regex"><![CDATA[^[a-z][A-Za-z]*$]]></parameter>
|
|
</parameters>
|
|
</check>
|
|
<check level="error" class="org.scalastyle.scalariform.EqualsHashCodeChecker" enabled="false"></check>
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.IllegalImportsChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="illegalImports"><![CDATA[sun._,java.awt._]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<check level="error" class="org.scalastyle.scalariform.ParameterNumberChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="maxParameters"><![CDATA[10]]></parameter>
|
|
</parameters>
|
|
</check>
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.MagicNumberChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="ignore"><![CDATA[-1,0,1,2,3]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<check level="error" class="org.scalastyle.scalariform.NoWhitespaceBeforeLeftBracketChecker" enabled="false"></check>
|
|
<check level="error" class="org.scalastyle.scalariform.NoWhitespaceAfterLeftBracketChecker" enabled="false"></check>
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.ReturnChecker" enabled="true"></check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.NullChecker" enabled="true"></check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.NoCloneChecker" enabled="true"></check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.NoFinalizeChecker" enabled="true"></check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.CovariantEqualsChecker" enabled="true"></check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.StructuralTypeChecker" enabled="true"></check> -->
|
|
<!-- <check level="error" class="org.scalastyle.file.RegexChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="regex"><![CDATA[println]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.NumberOfTypesChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="maxTypes"><![CDATA[30]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.CyclomaticComplexityChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="maximum"><![CDATA[10]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<check level="error" class="org.scalastyle.scalariform.UppercaseLChecker" enabled="true"></check>
|
|
<check level="error" class="org.scalastyle.scalariform.SimplifyBooleanExpressionChecker" enabled="false"></check>
|
|
<check level="error" class="org.scalastyle.scalariform.IfBraceChecker" enabled="true">
|
|
<parameters>
|
|
<parameter name="singleLineAllowed"><![CDATA[true]]></parameter>
|
|
<parameter name="doubleLineAllowed"><![CDATA[true]]></parameter>
|
|
</parameters>
|
|
</check>
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.MethodLengthChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="maxLength"><![CDATA[50]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.MethodNamesChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="regex"><![CDATA[^[a-z][A-Za-z0-9]*$]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" enabled="true"> -->
|
|
<!-- <parameters> -->
|
|
<!-- <parameter name="maxMethods"><![CDATA[30]]></parameter> -->
|
|
<!-- </parameters> -->
|
|
<!-- </check> -->
|
|
<!-- <check level="error" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" enabled="true"></check> -->
|
|
<check level="error" class="org.scalastyle.file.NewLineAtEofChecker" enabled="true"></check>
|
|
<check level="error" class="org.scalastyle.file.NoNewLineAtEofChecker" enabled="false"></check>
|
|
</scalastyle>
|