What is H2O?
H2O is an open-source platform for scalable and distributed machine learning, and set of algorithms implemented on that platform.
curl http://<Node2IP>:54321
(where <Node2IP>
is the IP address of the second node. Then, log in to the second node and enter curl http://<Node1IP>:54321
(where <Node1IP>
is the IP address of the first node). Look for output from H2O.-Xmx
value when launching H2O from the command line (for example, java -Xmx10g -jar h2o.jar
allocates 10g of memory for H2O). If you create a cluster with four 20g nodes (by specifying -Xmx20g
four times), H2O will have a total of 80 gigs of memory available. For best performance, we recommend sizing your cluster to be about four times the size of your data. To avoid swapping, the -Xmx
allocation must not exceed the physical memory on any node. Allocating the same amount of memory for all nodes is strongly recommended, as H2O works best with symmetric nodes.ps -efww | grep h2o
in your shell (OSX or Linux).telnet localhost 54321
, telnet localhost 54322
Attempting to join /localhost:54321 with an H2O version mismatch (md5 differs)
, update H2O on all the nodes to the same version./tmp
directory.
TEMP
and %TEMP%
and delete files as needed, or use Disk Cleanup.open $TMPDIR
and delete the folder with your username.-name
:java -jar h2o.jar -name myCloud
.INFO: Listening for HTTP and REST traffic on IP_Address/ 06-18 10:54:21.586 <IP_ADDRESS>:54323 25638 main INFO: H2O cloud name: 'H2O_User' on IP_Address, discovery address /Discovery_Address INFO: Cloud of size 1 formed [IP_Address]
-network <IP_ADDRESS>
). To use a network range, use a comma to separate the IP addresses (for example, -network <IP_ADDRESS>/22,<IP_ADDRESS>/24
).-ip
:java -jar h2o.jar -ip <IP_Address> -port <PortNumber>
.hadoop jar h2odriver.jar -timeout 1800
hadoop jar h2odriver.jar -mapperXmx 10g
. The cluster’s memory capacity is the sum of all H2O nodes in the cluster.The following error message displayed when I tried to launch H2O - what should I do?
Exception in thread "main" java.lang.UnsupportedClassVersionError: water/H2OApp : Unsupported major.minor version 51.0 at java.lang.ClassLoader.defineClass1(Native Method) at java.lang.ClassLoader.defineClassCond(Unknown Source) at java.lang.ClassLoader.defineClass(Unknown Source) at java.security.SecureClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.defineClass(Unknown Source) at java.net.URLClassLoader.access$000(Unknown Source) at java.net.URLClassLoader$1.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) Could not find the main class: water.H2OApp. Program will exit.
This error output indicates that your Java version is not supported. Upgrade to Java 7 (JVM) or later and H2O should launch successfully.
I am not launching on Hadoop. How can i increase the amount of time that H2O allows for expected nodes to connect?
For cluster startup, if you are not launching on Hadoop, then you will not need to specify a timeout. You can add additional nodes to the cloud as long as you haven't submitted any jobs to the cluster. When you do submit a job to the cluster, the cluster will lock and will print a message similar to "Locking cloud to new members, because <reason>...".
What's the process for implementing new algorithms in H2O?
This blog post by Cliff walks you through building a new algorithm, using K-Means, Quantiles, and Grep as examples.
To learn more about performance characteristics when implementing new algorithms, refer to Cliff's KV Store Guide.
How do I find the standard errors of the parameter estimates (p-values)?
P-values are currently supported for non-regularized GLM. The following requirements must be met:
To generate p-values, do one of the following:
compute_p_values=TRUE
in R or Python while creating the modelThe p-values are listed in the coefficients table (as shown in the following example screenshot):
How do I specify regression or classification for Distributed Random Forest in the web UI?
If the response column is numeric, H2O generates a regression model. If the response column is enum, the model uses classification. To specify the column type, select it from the drop-down column name list in the Edit Column Names and Types section during parsing.
What's the largest number of classes that H2O supports for multinomial prediction?
For tree-based algorithms, the maximum number of classes (or levels) for a response column is 1000.
How do I obtain a tree diagram of my DRF model?
Output the SVG code for the edges and nodes. A simple tree visitor is available here and the Java code generator is available here.
Is Word2Vec available? I can see the Java and R sources, but calling the API generates an error.
Word2Vec, along with other natural language processing (NLP) algos, are currently in development in the current version of H2O.
What are the "best practices" for preparing data for a K-Means model?
There aren't specific "best practices," as it depends on your data and the column types. However, removing outliers and transforming any categorical columns to have the same weight as the numeric columns will help, especially if you're standardizing your data.
What is your implementation of Deep Learning based on?
Our Deep Learning algorithm is based on the feedforward neural net. For more information, refer to our Data Science documentation or Wikipedia.
How is deviance computed for a Deep Learning regression model?
For a Deep Learning regression model, deviance is computed as follows:
Loss = MeanSquare -> MSE==Deviance For Absolute/Laplace or Huber -> MSE != Deviance.
For my 0-tree GBM multinomial model, I got a different score depending on whether or not validation was enabled, even though my dataset was the same - why is that?
Different results may be generated because of the way H2O computes the initial MSE.
How does your Deep Learning Autoencoder work? Is it deep or shallow?
H2O’s DL autoencoder is based on the standard deep (multi-layer) neural net architecture, where the entire network is learned together, instead of being stacked layer-by-layer. The only difference is that no response is required in the input and that the output layer has as many neurons as the input layer. If you don’t achieve convergence, then try using the Tanh activation and fewer layers. We have some example test scripts here, and even some that show how stacked auto-encoders can be implemented in R.
Are there any H2O examples using text for classification?
Currently, the following examples are available for Sparkling Water:
Most machine learning tools cannot predict with a new categorical level that was not included in the training set. How does H2O make predictions in this scenario?
Here is an example of how the prediction process works in H2O:
The behavior for unseen categorical levels depends on the algorithm and how it handles missing levels (NA values):
How are quantiles computed?
The quantile results in Flow are computed lazily on-demand and cached. It is a fast approximation (max - min / 1024) that is very accurate for most use cases. If the distribution is skewed, the quantile results may not be as accurate as the results obtained using h2o.quantile
in R or H2OFrame.quantile
in Python.
How do I create a classification model? The model always defaults to regression.
To create a classification model, the response column type must be enum
- if the response is numeric
, a regression model is created.
To convert the response column:
Enum
or
getFrameSummary "<frame_name>.hex"
command, where <frame_name>
is the name of the frame), then click the Convert to enum link to the right of the column name or numberDuring the build process, the following error message displays. What do I need to do to resolve it?
Error: Missing name at classes.R:19 In addition: Warning messages: 1: @S3method is deprecated. Please use @export instead 2: @S3method is deprecated. Please use @export instead Execution halted
To build H2O, Roxygen2 version 4.1.1 is required.
To update your Roxygen2 version, install the versions
package in R, then use install.versions("roxygen2", "4.1.1")
.
Using ``./gradlew build`` doesn't generate a build successfully - is there anything I can do to troubleshoot?
Use ./gradlew clean
before running ./gradlew build
.
I tried using ``./gradlew build`` after using ``git pull`` to update my local H2O repo, but now I can't get H2O to build successfully - what should I do?
Try using ./gradlew build -x test
- the build may be failing tests if data is not synced correctly.
When trying to launch H2O, I received the following error message: ``ERROR: Too many retries starting cloud.`` What should I do?
If you are trying to start a multi-node cluster where the nodes use multiple network interfaces, by default H2O will resort to using the default host (<IP_ADDRESS>).
To specify an IP address, launch H2O using the following command:
java -jar h2o.jar -ip <IP_Address> -port <PortNumber>
If this does not resolve the issue, try the following additional troubleshooting tips:
-name
:java -jar h2o.jar -name myCloud
.-network <IP_ADDRESS>
).-ip
:java -jar h2o.jar -ip <IP_Address> -port <PortNumber>
.What should I do if I tried to start a cluster but the nodes started independent clouds that are not connected?
Because the default cloud name is the user name of the node, if the nodes are on different operating systems (for example, one node is using Windows and the other uses OS X), the different user names on each machine will prevent the nodes from recognizing that they belong to the same cloud. To resolve this issue, use -name
to configure the same name for all nodes.
One of the nodes in my cluster is unavailable — what do I do?
H2O does not support high availability (HA). If a node in the cluster is unavailable, bring the cluster down and create a new healthy cluster.
How do I add new nodes to an existing cluster?
New nodes can only be added if H2O has not started any jobs. Once H2O starts a task, it locks the cluster to prevent new nodes from joining. If H2O has started a job, you must create a new cluster to include additional nodes.
How do I check if all the nodes in the cluster are healthy and communicating?
In the Flow web UI, click the Admin menu and select Cluster Status.
How do I create a cluster behind a firewall?
H2O uses two ports:
REST_API
port (54321): Specify when launching H2O using -port
; uses TCP only.INTERNAL_COMMUNICATION
port (54322): Implied based on the port specified as the REST_API
port, +1; requires TCP and UDP.You can start the cluster behind the firewall, but to reach it, you must make a tunnel to reach the REST_API
port. To use the cluster, the REST_API
port of at least one node must be reachable.
I launched H2O instances on my nodes - why won't they form a cloud?
If you launch without specifying the IP address by adding argument -ip:
$ java -Xmx20g -jar h2o.jar -flatfile flatfile.txt -port 54321
and multiple local IP addresses are detected, H2O uses the default localhost (<IP_ADDRESS>) as shown below:
10:26:32.266 main WARN WATER: Multiple local IPs detected: + /<IP_ADDRESS> /<IP_ADDRESS> + Attempting to determine correct address... 10:26:32.284 main WARN WATER: Failed to determine IP, falling back to localhost. 10:26:32.325 main INFO WATER: Internal communication uses port: 54322 + Listening for HTTP and REST traffic + on http://<IP_ADDRESS>:54321/ 10:26:32.378 main WARN WATER: Flatfile configuration does not include self: /<IP_ADDRESS>:54321 but contains [/<IP_ADDRESS>:54321, /<IP_ADDRESS>:54321]
To avoid using <IP_ADDRESS> on servers with multiple local IP addresses, run the command with the -ip argument to force H2O to launch at the specified IP:
$ java -Xmx20g -jar h2o.jar -flatfile flatfile.txt -ip <IP_ADDRESS> -port 54321
How does the timeline tool work?
The timeline is a debugging tool that provides information on the current communication between H2O nodes. It shows a snapshot of the most recent messages passed between the nodes. Each node retains its own history of messages sent to or received from other nodes.
H2O collects these messages from all the nodes and orders them by whether they were sent or received. Each node has an implicit internal order where sent messages must precede received messages on the other node.
The following information displays for each message:
HH:MM:SS:MS
and nanosec
: The local time of the eventWho
: The endpoint of the message; can be either a source/receiver node or source node and multicast for broadcasted messagesI/O Type
: The type of communication (either UDP for small messages or TCP for large messages) >Note: UDP messages are only sent if the UDP option was enabled when launching H2O or for multicast when a flatfile is not used for configuration.Event
: The type of H2O message. The most common type is a distributed task, which displays as exec
(the requested task) -> ack
(results of the processed task) -> ackck
(sender acknowledges receiving the response, task is completed and removed)rebooted
: Sent during node startupheartbeat
: Provides small message tracking information about node health, exchanged periodically between nodesfetchack
: Aknowledgement of the Fetch
type task, which retrieves the ID of a previously unseen typebytes
: Information extracted from the message, including the type of the task and the unique task numberHow should I format my SVMLight data before importing?
The data must be formatted as a sorted list of unique integers, the column indices must be >= 1, and the columns must be in ascending order.
What date and time formats does H2O support?
H2O is set to auto-detect two major date/time formats. Because many date time formats are ambiguous (e.g. 01/02/03), general date time detection is not used.
The first format is for dates formatted as yyyy-MM-dd. Year is a four-digit number, the month is a two-digit number ranging from 1 to 12, and the day is a two-digit value ranging from 1 to 31. This format can also be followed by a space and then a time (specified below).
The second date format is for dates formatted as dd-MMM-yy. Here the day must be one or two digits with a value ranging from 1 to 31. The month must be either a three-letter abbreviation or the full month name but is not case sensitive. The year must be either two or four digits. In agreement with POSIX standards, two-digit dates >= 69 are assumed to be in the 20th century (e.g. 1969) and the rest are part of the 21st century. This date format can be followed by either a space or colon character and then a time. The '-' between the values is optional.
Times are specified as HH:mm:ss. HH is a two-digit hour and must be a value between 0-23 (for 24-hour time) or 1-12 (for a twelve-hour clock). mm is a two-digit minute value and must be a value between 0-59. ss is a two-digit second value and must be a value between 0-59. This format can be followed with either milliseconds, nanoseconds, and/or the cycle (i.e. AM/PM). If milliseconds are included, the format is HH:mm:ss:SSS. If nanoseconds are included, the format is HH:mm:ss:SSSnnnnnn. H2O only stores fractions of a second up to the millisecond, so accuracy may be lost. Nanosecond parsing is only included for convenience. Finally, a valid time can end with a space character and then either "AM" or "PM". For this format, the hours must range from 1 to 12. Within the time, the ':' character can be replaced with a '.' character.
How does H2O handle name collisions/conflicts in the dataset?
If there is a name conflict (for example, column 48 isn't named, but C48 already exists), then the column name in concatenated to itself until a unique name is created. So for the previously cited example, H2O will try renaming the column to C48C48, then C48C48C48, and so on until an unused name is generated.
What types of data columns does H2O support?
Currently, H2O supports:
I am trying to parse a Gzip data file containing multiple files, but it does not parse as quickly as the uncompressed files. Why is this?
Parsing Gzip files is not done in parallel, so it is sequential and uses only one core. Other parallel parse compression schemes are on the roadmap.
How do I score using an exported JSON model?
Since JSON is just a representation format, it cannot be directly executed, so a JSON export can't be used for scoring. However, you can score by:
or
How do I score using an exported POJO?
The generated POJO can be used indepedently of a H2O cluster. First use curl
to send the h2o-genmodel.jar file and the java code for model to the server. The following is an example; the ip address and model names will need to be changed.
mkdir tmpdir cd tmpdir curl http://<IP_ADDRESS>:54321/3/h2o-genmodel.jar > h2o-genmodel.jar curl http://<IP_ADDRESS>:54321/3/Models.java/gbm_model > gbm_model.java
To score a simple .CSV file, download the PredictCsv.java file and compile it with the POJO. Make a subdirectory for the compilation (this is useful if you have multiple models to score on).
wget https://raw.githubusercontent.com/h2oai/h2o-3/master/h2o-r/tests/testdir_javapredict/PredictCSV.java mkdir gbm_model_dir javac -cp h2o-genmodel.jar -J-Xmx2g -J-XX:MaxPermSize=128m PredictCSV.java gbm_model.java -d gbm_model_dir
Specify the following: - the classpath using -cp
- the model name (or class) using --model
- the csv file you want to score using --input
- the location for the predictions using --output
.
You must match the table column names to the order specified in the POJO. The output file will be in a .hex format, which is a lossless text representation of floating point numbers. Both R and Java will be able to read the hex strings as numerics.
java -ea -cp h2o-genmodel.jar:gbm_model_dir -Xmx4g -XX:MaxPermSize=256m -XX:ReservedCodeCacheSize=256m PredictCSV --header --model gbm_model --input input.csv --output output.csv
How do I predict using multiple response variables?
Currently, H2O does not support multiple response variables. To predict different response variables, build multiple models.
How do I kill any running instances of H2O?
In Terminal, enter ps -efww | grep h2o
, then kill any running PIDs. You can also find the running instance in Terminal and press Ctrl + C on your keyboard. To confirm no H2O sessions are still running, go to http://localhost:54321
and verify that the H2O web UI does not display.
Why is H2O not launching from the command line?
$ java -jar h2o.jar & % Exception in thread "main" java.lang.ExceptionInInitializerError at java.lang.Class.initializeClass(libgcj.so.10) at water.Boot.getMD5(Boot.java:73) at water.Boot.<init>(Boot.java:114) at water.Boot.<clinit>(Boot.java:57) at java.lang.Class.initializeClass(libgcj.so.10) Caused by: java.lang.IllegalArgumentException at java.util.regex.Pattern.compile(libgcj.so.10) at water.util.Utils.<clinit>(Utils.java:1286) at java.lang.Class.initializeClass(libgcj.so.10) ...4 more
The only prerequisite for running H2O is a compatible version of Java. We recommend Oracle's Java 1.7.
Why did I receive the following error when I tried to launch H2O?
[root@sandbox h2o-dev-<IP_ADDRESS>8-hdp2.2]hadoop jar h2odriver.jar -nodes 2 -mapperXmx 1g -output hdfsOutputDirName Determining driver host interface for mapper->driver callback... [Possible callback IP address: <IP_ADDRESS>] [Possible callback IP address: <IP_ADDRESS>] Using mapper->driver callback IP address and port: <IP_ADDRESS>:41188 (You can override these with -driverif and -driverport.) Memory Settings: mapreduce.map.java.opts: -Xms1g -Xmx1g -Dlog4j.defaultInitOverride=true Extra memory percent: 10 mapreduce.map.memory.mb: 1126 15/05/08 02:33:40 INFO impl.TimelineClientImpl: Timeline service address: http://sandbox.hortonworks.com:8188/ws/v1/timeline/ 15/05/08 02:33:41 INFO client.RMProxy: Connecting to ResourceManager at sandbox.hortonworks.com/<IP_ADDRESS>:8050 15/05/08 02:33:47 INFO mapreduce.JobSubmitter: number of splits:2 15/05/08 02:33:48 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1431052132967_0001 15/05/08 02:33:51 INFO impl.YarnClientImpl: Submitted application application_1431052132967_0001 15/05/08 02:33:51 INFO mapreduce.Job: The url to track the job: http://sandbox.hortonworks.com:8088/proxy/application_1431052132967_0001/ Job name 'H2O_3889' submitted JobTracker job ID is 'job_1431052132967_0001' For YARN users, logs command is 'yarn logs -applicationId application_1431052132967_0001' Waiting for H2O cluster to come up... H2O node <IP_ADDRESS>:54321 requested flatfile ERROR: Timed out waiting for H2O cluster to come up (120 seconds) ERROR: (Try specifying the -timeout option to increase the waiting time limit) 15/05/08 02:35:59 INFO impl.TimelineClientImpl: Timeline service address: http://sandbox.hortonworks.com:8188/ws/v1/timeline/ 15/05/08 02:35:59 INFO client.RMProxy: Connecting to ResourceManager at sandbox.hortonworks.com/<IP_ADDRESS>:8050 ----- YARN cluster metrics ----- Number of YARN worker nodes: 1 ----- Nodes ----- Node: http://sandbox.hortonworks.com:8042 Rack: /default-rack, RUNNING, 1 containers used, 0.2 / 2.2 GB used, 1 / 8 vcores used ----- Queues ----- Queue name: default Queue state: RUNNING Current capacity: 0.11 Capacity: 1.00 Maximum capacity: 1.00 Application count: 1 ----- Applications in this queue ----- Application ID: application_1431052132967_0001 (H2O_3889) Started: root (Fri May 08 02:33:50 UTC 2015) Application state: FINISHED Tracking URL: http://sandbox.hortonworks.com:8088/proxy/application_1431052132967_0001/jobhistory/job/job_1431052132967_0001 Queue name: default Used/Reserved containers: 1 / 0 Needed/Used/Reserved memory: 0.2 GB / 0.2 GB / 0.0 GB Needed/Used/Reserved vcores: 1 / 1 / 0 Queue 'default' approximate utilization: 0.2 / 2.2 GB used, 1 / 8 vcores used ---------------------------------------------------------------------- ERROR: Job memory request (2.2 GB) exceeds available YARN cluster memory (2.2 GB) WARNING: Job memory request (2.2 GB) exceeds queue available memory capacity (2.0 GB) ERROR: Only 1 out of the requested 2 worker containers were started due to YARN cluster resource limitations ---------------------------------------------------------------------- Attempting to clean up hadoop job... 15/05/08 02:35:59 INFO impl.YarnClientImpl: Killed application application_1431052132967_0001 Killed. [root@sandbox h2o-dev-<IP_ADDRESS>8-hdp2.2]#
The H2O launch failed because more memory was requested than was available. Make sure you are not trying to specify more memory in the launch parameters than you have available.
How does the architecture of H2O work?
This PDF includes diagrams and slides depicting how H2O works in big data environments.
I received the following error message when launching H2O - how do I resolve the error?
Invalid flow_dir illegal character at index 12...
This error message means that there is a space (or other unsupported character) in your H2O directory. To resolve this error:
C:\h2o
).or
-flow_dir
parameter when launching H2O: java -jar h2o.jar -flow_dir test
How does ``importFiles()`` work in H2O?
importFiles()
gets the basic information for the file and then returns a key representing that file. This key is used during parsing to read in the file and to save space so that the file isn't loaded every time; instead, it is loaded into H2O then referenced using the key. For files hosted online, H2O verifies the destination is valid, creates a vec that loads the file when necessary, and returns a key.
Does H2O support GPUs?
Currently, we do not support this capability. If you are interested in contributing your efforts to support this feature to our open-source code database, please contact us at<EMAIL_ADDRESS>How can I continue working on a model in H2O after restarting?
There are a number of ways you can save your model in H2O:
model_id
number from a built model and paste it into the checkpoint field in the buildModel
cell.How can I find out more about H2O's real-time, nano-fast scoring engine?
H2O's scoring engine uses a Plain Old Java Object (POJO). The POJO code runs quickly but is single-threaded. It is intended for embedding into lightweight real-time environments.
All the work is done by the call to the appropriate predict method. There is no involvement from H2O in this case.
To compare multiple models simultaneously, use the POJO to call the models using multiple threads. For more information on using POJOs, refer to the POJO Quick Start Guide and POJO Java Documentation
In-H2O scoring is triggered on an existing H2O cluster, typically using a REST API call. H2O evaluates the predictions in a parallel and distributed fashion for this case. The predictions are stored into a new Frame and can be written out using h2o.exportFile()
, for example.
I am writing an academic research paper and I would like to cite H2O in my bibliography - how should I do that?
To cite our software:
To cite one of our booklets:
If you are using Bibtex:
@Manual{h2o_GLM_booklet, title = {Generalized Linear Modeling with H2O}, author = {Nykodym, T. and Hussami, N. and Kraljevic, T. and Rao, A. and Wang, A.}, year = {2015}, month = {September}, url = {http://h2o.ai/resources}, } @Manual{h2o_DL_booklet, title = {Deep Learning with H2O}, author = {Candel, A. and LeDell, E. and Arora, A. and Parmar, V.}, year = {2015}, month = {September}, url = {http://h2o.ai/resources}, } @Manual{h2o_GBM_booklet, title = {Gradient Boosted Models}, author = {Click, C. and Lanford, J. and Malohlava, M. and Parmar, V. and Roark, H.}, year = {2015}, month = {September}, url = {http://h2o.ai/resources}, } @Manual{h2o_R_booklet, title = {Fast Scalable R with H2O}, author = {Aiello, S. and Eckstrand, E. and Fu, A. and Landry, M. and Aboyoun, P. }, year = {2015}, month = {September}, url = {http://h2o.ai/resources}, } @Manual{h2o_R_package, title = {h2o: R Interface for H2O}, author = {The H2O.ai team}, year = {2015}, note = {R package version <IP_ADDRESS>999}, url = {http://www.h2o.ai}, } @Manual{h2o_Python_module, title = {h2o: Python Interface for H2O}, author = {The H2O.ai team}, year = {2015}, note = {Python package version <IP_ADDRESS>999}, url = {http://www.h2o.ai}, } @Manual{h2o_Java_software, title = {H2O: Scalable Machine Learning}, author = {The H2O.ai team}, year = {2015}, note = {version <IP_ADDRESS>999}, url = {http://www.h2o.ai}, }
How can I use Flow to export the prediction results with a dataset?
After obtaining your results, click the Combine predictions with frame button, then click the View Frame button.
What are these RTMP and py_ temporary Frames? Why are they the same size as my original data?
No data is copied. H2O does a classic copy-on-write optimization. That Frame you see - it's nothing more than a thin wrapper over an internal list of columns; the columns are shared to avoid the copying.
The RTMP's now need to be entirely managed by the H2O wrapper - because indeed they are using shared state under the hood. If you delete one, you probably delete parts of others. Instead, temp management should be automatic and "good" - as in: it's a bug if you need to delete a temp manually, or if passing around Frames, or adding or removing columns turns into large data copies.
R's GC is now used to remove unused R temps, and when the last use of a shared column goes away, then the H2O wrapper will tell the H2O cluster to remove that no longer needed column.
In other words: Don't delete RTMPs, they'll disappear at the next R GC. Don't worry about copies (they aren't getting made). Do Nothing and All Is Well.
Why did I get an error in R when I tried to save my model to my home directory in Hadoop?
To save the model in HDFS, prepend the save directory with hdfs://
:
# build model model = h2o.glm(model params) # save model hdfs_name_node <- "mr-0x6" hdfs_tmp_dir <- "/tmp/runit” model_path <- sprintf("hdfs://%s%s", hdfs_name_node, hdfs_tmp_dir) h2o.saveModel(model, dir = model_path, name = “mymodel")
How do I specify which nodes should run H2O in a Hadoop cluster?
After creating and applying the desired node labels and associating them with specific queues as described in the Hadoop documentation, launch H2O using the following command:
hadoop jar h2odriver.jar -Dmapreduce.job.queuename=<my-h2o-queue> -nodes <num-nodes> -mapperXmx 6g -output hdfsOutputDirName
-Dmapreduce.job.queuename=<my-h2o-queue>
represents the queue name-nodes <num-nodes>
represents the number of nodes-mapperXmx 6g
launches H2O with 6g of memory-output hdfsOutputDirName
specifies the HDFS output directory as hdfsOutputDirName
How does H2O handle UDP packet failures? Does H2O quit or retry?
In standard settings, H2O only uses UDP for cloud forming and only if you do not provide a flat file. All other communication is done via TCP. Cloud forming with no flat file is done by repeated broadcasts that are repeated until the cloud forms.
How do I import data from HDFS in R and in Flow?
To import from HDFS in R:
h2o.importFolder(path, pattern = "", destination_frame = "", parse = TRUE, header = NA, sep = "", col.names = NULL, na.strings = NULL)
Here is another example:
# pathToAirlines <- "hdfs://mr-0xd6.0xdata.loc/datasets/airlines_all.csv" # airlines.hex <- h2o.importFile(path = pathToAirlines, destination_frame = "airlines.hex")
In Flow, the easiest way is to let the auto-suggestion feature in the Search: field complete the path for you. Just start typing the path to the file, starting with the top-level directory, and H2O provides a list of matching files.
Click the file to add it to the Search: field.
Why do I receive the following error when I try to save my notebook in Flow?
Error saving notebook: Error calling POST /3/NodePersistentStorage/notebook/Test%201 with opts
When you are running H2O on Hadoop, H2O tries to determine the home HDFS directory so it can use that as the download location. If the default home HDFS directory is not found, manually set the download location from the command line using the -flow_dir
parameter (for example, hadoop jar h2odriver.jar <...> -flow_dir hdfs:///user/yourname/yourflowdir
). You can view the default download directory in the logs by clicking Admin > View logs... and looking for the line that begins Flow dir:
.
How do I access data in HDFS without launching H2O on YARN?
Each h2odriver.jar file is built with a specific Hadoop distribution so in order to have a working HDFS connection download the h2odriver.jar file for your Hadoop distribution from here.
Then run the command to launch the H2O Application in the driver by specifying the classpath:
unzip h2o-<version>.zip cd h2o-<version> java -cp h2odriver.jar water.H2OApp
How do I use H2O with Java?
There are two ways to use H2O with Java. The simplest way is to call the REST API from your Java program to a remote cluster and should meet the needs of most users.
You can access the REST API documentation within Flow, or on our documentation site.
Flow, Python, and R all rely on the REST API to run H2O. For example, each action in Flow translates into one or more REST API calls. The script fragments in the cells in Flow are essentially the payloads for the REST API calls. Most R and Python API calls translate into a single REST API call.
To see how the REST API is used with H2O:
h2o.startLogging()
at the beginning. All REST API calls used are logged.The second way to use H2O with Java is to embed H2O within your Java application, similar to Sparkling Water.
How do I communicate with a remote cluster using the REST API?
To create a set of bare POJOs for the REST API payloads that can be used by JVM REST API clients:
% cd py
.% python generate_java_binding.py
.This script connects to the server, gets all the metadata for the REST API schemas, and writes the Java POJOs to {sourcehome}/build/bindings/Java
.
I keep getting a message that I need to install Java. I have the latest version of Java installed, but I am still getting this message. What should I do?
This error message displays if the JAVA_HOME
environment variable is not set correctly. The JAVA_HOME
variable is likely points to Apple Java version 6 instead of Oracle Java version 8.
If you are running OS X 10.7 or earlier, enter the following in Terminal: export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
If you are running OS X 10.8 or later, modify the launchd.plist by entering the following in Terminal:
cat << EOF | sudo tee /Library/LaunchDaemons/setenv.JAVA_HOME.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>setenv.JAVA_HOME</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>setenv</string> <string>JAVA_HOME</string> <string>/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist> EOF
I tried to install H2O in Python but ``pip install scikit-learn`` failed - what should I do?
Use the following commands (prepending with sudo
if necessary):
easy_install pip pip install numpy brew install gcc pip install scipy pip install scikit-learn
If you are still encountering errors and you are using OSX, the default version of Python may be installed. We recommend installing the Homebrew version of Python instead:
brew install python
If you are encountering errors related to missing Python packages when using H2O, refer to the following list for a complete list of all Python packages, including dependencies:
grip
tabulate
wheele
jsonlite
ipython
numpy
scipy
pandas
-U gensim
jupyter
-U PIL
nltk
beautifulsoup4
How do I specify a value as an enum in Python? Is there a Python equivalent of ``as.factor()`` in R?
Use .asfactor()
to specify a value as an enum.
I received the following error when I tried to install H2O using the Python instructions on the downloads page - what should I do to resolve it?
Downloading/unpacking http://h2o-release.s3.amazonaws.com/h2o/rel-shannon/12/Python/h2o-<IP_ADDRESS>-py2.py3-none-any.whl Downloading h2o-<IP_ADDRESS>-py2.py3-none-any.whl (43.1Mb): 43.1Mb downloaded Running setup.py egg_info for package from http://h2o-release.s3.amazonaws.com/h2o/rel-shannon/12/Python/h2o-<IP_ADDRESS>-py2.py3-none-any.whl Traceback (most recent call last): File "<string>", line 14, in <module> IOError: [Errno 2] No such file or directory: '/tmp/pip-nTu3HK-build/setup.py' Complete output from command python setup.py egg_info: Traceback (most recent call last): File "<string>", line 14, in <module> IOError: [Errno 2] No such file or directory: '/tmp/pip-nTu3HK-build/setup.py' --- Command python setup.py egg_info failed with error code 1 in /tmp/pip-nTu3HK-build
With Python, there is no automatic update of installed packages, so you must upgrade manually. Additionally, the package distribution method recently changed from distutils
to wheel
. The following procedure should be tried first if you are having trouble installing the H2O package, particularly if error messages related to bdist_wheel
or eggs
display.
# this gets the latest setuptools # see https://pip.pypa.io/en/latest/installing.html wget https://bootstrap.pypa.io/ez_setup.py -O - | sudo python # platform dependent ways of installing pip are at # https://pip.pypa.io/en/latest/installing.html # but the above should work on most linux platforms? # on ubuntu # if you already have some version of pip, you can skip this. sudo apt-get install python-pip # the package manager doesn't install the latest. upgrade to latest # we're not using easy_install any more, so don't care about checking that pip install pip --upgrade # I've seen pip not install to the final version ..i.e. it goes to an almost # final version first, then another upgrade gets it to the final version. # We'll cover that, and also double check the install. # after upgrading pip, the path name may change from /usr/bin to /usr/local/bin # start a new shell, just to make sure you see any path changes bash # Also: I like double checking that the install is bulletproof by reinstalling. # Sometimes it seems like things say they are installed, but have errors during the install. Check for no errors or stack traces. pip install pip --upgrade --force-reinstall # distribute should be at the most recent now. Just in case # don't do --force-reinstall here, it causes an issue. pip install distribute --upgrade # Now check the versions pip list | egrep '(distribute|pip|setuptools)' distribute (0.7.3) pip (7.0.3) setuptools (17.0) # Re-install wheel pip install wheel --upgrade --force-reinstall
After completing this procedure, go to Python and use h2o.init()
to start H2O in Python.
Notes:
If you use gradlew to build the jar yourself, you have to start the jar >yourself before you do
h2o.init()
.If you download the jar and the H2O package,
h2o.init()
will work like R >and you don't have to start the jar yourself.
How should I specify the datatype during import in Python?
Refer to the following example:
#Let's say you want to change the second column "CAPSULE" of prostate.csv #to categorical. You have 3 options. #Option 1. Use a dictionary of column names to types. fr = h2o.import_file("smalldata/logreg/prostate.csv", col_types = {"CAPSULE":"Enum"}) fr.describe() #Option 2. Use a list of column types. c_types = [None]*9 c_types[1] = "Enum" fr = h2o.import_file("smalldata/logreg/prostate.csv", col_types = c_types) fr.describe() #Option 3. Use parse_setup(). fraw = h2o.import_file("smalldata/logreg/prostate.csv", parse = False) fsetup = h2o.parse_setup(fraw) fsetup["column_types"][1] = '"Enum"' fr = h2o.parse_raw(fsetup) fr.describe()
How do I view a list of variable importances in Python?
Use model.varimp(return_list=True)
as shown in the following example:
model = h2o.gbm(y = "IsDepDelayed", x = ["Month"], training_frame = df) vi = model.varimp(return_list=True) Out[26]: [(u'Month', 69.27436828613281, 1.0, 1.0)]
What is PySparkling? How can I use it for grid search or early stopping?
PySparkling basically calls H2O Python functions for all operations on H2O data frames. You can perform all H2O Python operations available in H2O Python version <IP_ADDRESS> or later from PySparkling.
For help on a function within IPython Notebook, run H2OGridSearch?
Here is an example of grid search in PySparkling:
from h2o.grid.grid_search import H2OGridSearch from h2o.estimators.gbm import H2OGradientBoostingEstimator iris = h2o.import_file("/Users/nidhimehta/h2o-dev/smalldata/iris/iris.csv") ntrees_opt = [5, 10, 15] max_depth_opt = [2, 3, 4] learn_rate_opt = [0.1, 0.2] hyper_parameters = {"ntrees": ntrees_opt, "max_depth":max_depth_opt, "learn_rate":learn_rate_opt} gs = H2OGridSearch(H2OGradientBoostingEstimator(distribution='multinomial'), hyper_parameters) gs.train(x=range(0,iris.ncol-1), y=iris.ncol-1, training_frame=iris, nfold=10) #gs.show print gs.sort_by('logloss', increasing=True)
Here is an example of early stopping in PySparkling:
from h2o.grid.grid_search import H2OGridSearch from h2o.estimators.deeplearning import H2ODeepLearningEstimator hidden_opt = [[32,32],[32,16,8],[100]] l1_opt = [1e-4,1e-3] hyper_parameters = {"hidden":hidden_opt, "l1":l1_opt} model_grid = H2OGridSearch(H2ODeepLearningEstimator, hyper_params=hyper_parameters) model_grid.train(x=x, y=y, distribution="multinomial", epochs=1000, training_frame=train, validation_frame=test, score_interval=2, stopping_rounds=3, stopping_tolerance=0.05, stopping_metric="misclassification")
Do you have a tutorial for grid search in Python?
Yes, a notebook is available here that demonstrates the use of grid search in Python.
Which versions of R are compatible with H2O?
Currently, the only version of R that is known to not work well with H2O is R version 3.1.0 (codename "Spring Dance"). If you are using this version, we recommend upgrading the R version before using H2O.
What R packages are required to use H2O?
The following packages are required:
methods
statmod
stats
graphics
RCurl
jsonlite
tools
utils
Some of these packages have dependencies; for example, bitops
is required, but it is a dependency of the RCurl
package, so bitops
is automatically included when RCurl
is installed.
If you are encountering errors related to missing R packages when using H2O, refer to the following list for a complete list of all R packages, including dependencies:
statmod
bitops
RCurl
jsonlite
methods
stats
graphics
tools
utils
stringi
magrittr
colorspace
stringr
RColorBrewer
dichromat
munsell
labeling
plyr
digest
gtable
reshape2
scales
proto
ggplot2
h2oEnsemble
gtools
gdata
caTools
gplots
chron
ROCR
data.table
cvAUC
Finally, if you are running R on Linux, then you must install libcurl
, which allows H2O to communicate with R.
How can I install the H2O R package if I am having permissions problems?
This issue typically occurs for Linux users when the R software was installed by a root user. For more information, refer to the following link.
To specify the installation location for the R packages, create a file that contains the R_LIBS_USER
environment variable:
echo R_LIBS_USER=\"~/.Rlibrary\" > ~/.Renviron
Confirm the file was created successfully using cat
:
$ cat ~/.Renviron
You should see the following output:
R_LIBS_USER="~/.Rlibrary"
Create a new directory for the environment variable:
$ mkdir ~/.Rlibrary
Start R and enter the following:
.libPaths()
Look for the following output to confirm the changes:
[1] "<Your home directory>/.Rlibrary" [2] "/Library/Frameworks/R.framework/Versions/3.1/Resources/library"
I received the following error message after launching H2O in RStudio and using ``h2o.init`` - what should I do to resolve this error?
Error in h2o.init() : Version mismatch! H2O is running version <IP_ADDRESS> but R package is version <IP_ADDRESS>
This error is due to a version mismatch between the H2O R package and the running H2O instance. Make sure you are using the latest version of both files by downloading H2O from the downloads page and installing the latest version and that you have removed any previous H2O R package versions by running:
if ("package:h2o" %in% search()) { detach("package:h2o", unload=TRUE) } if ("h2o" %in% rownames(installed.packages())) { remove.packages("h2o") }
Make sure to install the dependencies for the H2O R package as well:
if (! ("methods" %in% rownames(installed.packages()))) { install.packages("methods") } if (! ("statmod" %in% rownames(installed.packages()))) { install.packages("statmod") } if (! ("stats" %in% rownames(installed.packages()))) { install.packages("stats") } if (! ("graphics" %in% rownames(installed.packages()))) { install.packages("graphics") } if (! ("RCurl" %in% rownames(installed.packages()))) { install.packages("RCurl") } if (! ("jsonlite" %in% rownames(installed.packages()))) { install.packages("jsonlite") } if (! ("tools" %in% rownames(installed.packages()))) { install.packages("tools") } if (! ("utils" %in% rownames(installed.packages()))) { install.packages("utils") }
Finally, install the latest version of the H2O package for R:
install.packages("h2o", type="source", repos=(c("http://h2o-release.s3.amazonaws.com/h2o/<branch_name>/<build_number>/R"))) library(h2o) localH2O = h2o.init(nthreads=-1)
If your R version is older than the H2O R package, upgrade your R version using update.packages(checkBuilt=TRUE, ask=FALSE)
.
I received the following error message after trying to run some code - what should I do?
> fit <- h2o.deeplearning(x=2:4, y=1, training_frame=train_hex) |=========================================================================================================| 100% Error in model$training_metrics$MSE : $ operator not defined for this S4 class In addition: Warning message: Not all shim outputs are fully supported, please see ?h2o.shim for more information
Remove the h2o.shim(enable=TRUE)
line and try running the code again. Note that the h2o.shim
is only a way to notify users of previous versions of H2O about changes to the H2O R package - it will not revise your code, but provides suggested replacements for deprecated commands and parameters.
How do I extract the model weights from a model I've creating using H2O in R? I've enabled ``extract_model_weights_and_biases``, but the output refers to a file I can't open in R.
For an example of how to extract weights and biases from a model, refer to the following repo location on GitHub.
How do I extract the run time of my model as output?
For the following example:
out.h2o.rf = h2o.randomForest( x=c("x1", "x2", "x3", "w"), y="y", training_frame=h2o.df.train, seed=555, model_id= "my.model.1st.try.out.h2o.rf" )
Use out.h2o.rf@model$run_time
to determine the value of the run_time
variable.
What is the best way to do group summarizations? For example, getting sums of specific columns grouped by a categorical column.
We strongly recommend using h2o.group_by
for this function instead of h2o.ddply
, as shown in the following example:
newframe <- h2o.group_by(h2oframe, by="footwear_category", nrow("email_event_click_ct"), sum("email_event_click_ct"), mean("email_event_click_ct"), sd("email_event_click_ct"), gb.control = list( col.names=c("count", "total_email_event_click_ct", "avg_email_event_click_ct", "std_email_event_click_ct") ) )
Using gb.control
is optional; here it is included so the column names are user-configurable.
The by
option can take a list of columns if you want to group by more than one column to compute the summary as shown in the following example:
newframe <- h2o.group_by(h2oframe, by=c("footwear_category","age_group"), nrow("email_event_click_ct"), sum("email_event_click_ct"), mean("email_event_click_ct"), sd("email_event_click_ct"), gb.control = list( col.names=c("count", "total_email_event_click_ct", "avg_email_event_click_ct", "std_email_event_click_ct") ) )
I'm using Linux and I want to run H2O in R - are there any dependencies I need to install?
Yes, make sure to install libcurl
, which allows H2O to communicate with R. We also recommend disabling SElinux and any firewalls, at least initially until you have confirmed H2O can initialize.
apt-get install libcurl4-openssl-dev
yum install libcurl-devel
How do I change variable/header names on an H2O frame in R?
There are two ways to change header names. To specify the headers during parsing, import the headers in R and then specify the header as the column name when the actual data frame is imported:
header <- h2o.importFile(path = pathToHeader) data <- h2o.importFile(path = pathToData, col.names = header) data
You can also use the names()
function:
header <- c("user", "specified", "column", "names") data <- h2o.importFile(path = pathToData) names(data) <- header
To replace specific column names, you can also use a sub/gsub
in R:
header <- c("user", "specified", "column", "names") ## I want to replace "user" column with "computer" data <- h2o.importFile(path = pathToData) names(data) <- sub(pattern = "user", replacement = "computer", x = names(header))
My R terminal crashed - how can I re-access my H2O frame?
Launch H2O and use your web browser to access the web UI, Flow, at localhost:54321
. Click the Data menu, then click List All Frames. Copy the frame ID, then run h2o.ls()
in R to list all the frames, or use the frame ID in the following code (replacing YOUR_FRAME_ID
with the frame ID):
library(h2o) localH2O = h2o.init(ip="sri.h2o.ai", port=54321, startH2O = F, strict_version_check=T) data_frame <- h2o.getFrame(frame_id = "YOUR_FRAME_ID")
How do I remove rows containing NAs in an H2OFrame?
To remove NAs from rows:
a b c d e 1 0 NA NA NA NA 2 0 2 2 2 2 3 0 NA NA NA NA 4 0 NA NA 1 2 5 0 NA NA NA NA 6 0 1 2 3 2
Removing rows 1, 3, 4, 5 to get:
a b c d e 2 0 2 2 2 2 6 0 1 2 3 2
Use na.omit(myFrame)
, where myFrame
represents the name of the frame you are editing.
I installed H2O in R using OS X and updated all the dependencies, but the following error message displayed: ``Error in .h2o.doSafeREST(h2oRestApiVersion = h2oRestApiVersion, Unexpected CURL error: Empty reply from server`` - what should I do?
This error message displays if the JAVA_HOME
environment variable is not set correctly. The JAVA_HOME
variable is likely points to Apple Java version 6 instead of Oracle Java version 8.
If you are running OS X 10.7 or earlier, enter the following in Terminal: export JAVA_HOME=/Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
If you are running OS X 10.8 or later, modify the launchd.plist by entering the following in Terminal:
cat << EOF | sudo tee /Library/LaunchDaemons/setenv.JAVA_HOME.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>setenv.JAVA_HOME</string> <key>ProgramArguments</key> <array> <string>/bin/launchctl</string> <string>setenv</string> <string>JAVA_HOME</string> <string>/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home</string> </array> <key>RunAtLoad</key> <true/> <key>ServiceIPC</key> <false/> </dict> </plist> EOF
How does the ``col.names`` argument work in ``group_by``?
You need to add the col.names
inside the gb.control
list. Refer to the following example:
newframe <- h2o.group_by(dd, by="footwear_category", nrow("email_event_click_ct"), sum("email_event_click_ct"), mean("email_event_click_ct"), sd("email_event_click_ct"), gb.control = list( col.names=c("count", "total_email_event_click_ct", "avg_email_event_click_ct", "std_email_event_click_ct") ) ) newframe$avg_email_event_click_ct2 = newframe$total_email_event_click_ct / newframe$count
How are the results of ``h2o.predict`` displayed?
The order of the rows in the results for h2o.predict
is the same as the order in which the data was loaded, even if some rows fail (for example, due to missing values or unseen factor levels). To bind a per-row identifier, use cbind
.
How do I view all the variable importances for a model?
By default, H2O returns the top five and lowest five variable importances. To view all the variable importances, use the following:
model <- h2o.getModel(model_id = "my_H2O_modelID",conn=localH2O) varimp<-as.data.frame(h2o.varimp(model))
How do I add random noise to a column in an H2O frame?
To add random noise to a column in an H2O frame, refer to the following example:
h2o.init() fr <- as.h2o(iris) |======================================================================| 100% random_column <- h2o.runif(fr) new_fr <- h2o.cbind(fr,random_column) new_fr
What is Sparkling Water?
Sparkling Water allows users to combine the fast, scalable machine learning algorithms of H2O with the capabilities of Spark. With Sparkling Water, users can drive computation from Scala/R/Python and utilize the H2O Flow UI, providing an ideal machine learning platform for application developers.
What are the advantages of using Sparkling Water compared with H2O?
Sparkling Water contains the same features and functionality as H2O but provides a way to use H2O with Spark, a large-scale cluster framework.
Sparkling Water is ideal for H2O users who need to manage large clusters for their data processing needs and want to transfer data from Spark to H2O (or vice versa).
There is also a Python interface available to enable access to Sparkling Water directly from PySpark.
How do I filter an H2OFrame using Sparkling Water?
Filtering columns is easy: just remove the unnecessary columns or create a new H2OFrame from the columns you want to include (Frame(String[] names, Vec[] vec)
), then make the H2OFrame wrapper around it (new H2OFrame(frame)
).
Filtering rows is a little bit harder. There are two ways:
1/0
for the in/out
sample (make sure to take this additional vector into account in your computations). This solution is quite cheap, since you do not duplicate data - just create a simple vector in a data walk.or
H2OFrame
)How can I save and load a K-means model using Sparkling Water?
The following example code defines the save and load functions explicitly.
import water._ import _root_.hex._ import java.net.URI import water.serial.ObjectTreeBinarySerializer // Save H2O model (as binary) def exportH2OModel(model : Model[_,_,_], destination: URI): URI = { val modelKey = model._key.asInstanceOf[Key[_ <: Keyed[_ <: Keyed[_ <: AnyRef]]]] val keysToExport = model.getPublishedKeys() // Prepend model key keysToExport.add(0, modelKey) new ObjectTreeBinarySerializer().save(keysToExport, destination) destination } // Get model from H2O DKV and Save to disk val gbmModel: _root_.hex.tree.gbm.GBMModel = DKV.getGet("model") exportH2OModel(gbmModel, new File("../h2omodel.bin").toURI) def loadH2OModel[M <: Model[_, _, _]](source: URI) : M = { val l = new ObjectTreeBinarySerializer().load(source) l.get(0).get().asInstanceOf[M] } // Load H2O model def loadH2OModel[M <: Model[_, _, _]](source: URI) : M = { val l = new ObjectTreeBinarySerializer().load(source) l.get(0).get().asInstanceOf[M] } // Load model val h2oModel: Model[_, _, _] = loadH2OModel(new File("../h2omodel.bin").toURI)
How do I inspect H2O using Flow while a droplet is running?
If your droplet execution time is very short, add a simple sleep statement to your code:
Thread.sleep(...)
How do I change the memory size of the executors in a droplet?
There are two ways to do this:
$SPARK_HOME/conf/spark-defaults.conf
or
--conf
via spark-submit when you launch your droplet (e.g.,$SPARK_HOME/bin/spark-submit --conf spark.executor.memory=4g --master $MASTER --class org.my.Droplet $TOPDIR/assembly/build/libs/droplet.jar
I received the following error while running Sparkling Water using multiple nodes, but not when using a single node - what should I do?
onExCompletion for water.parser.ParseDataset$MultiFileParseTask@31cd4150 water.DException$DistributedException: from /<IP_ADDRESS>:54321; by class water.parser.ParseDataset$MultiFileParseTask; class water.DException$DistributedException: from /<IP_ADDRESS>:54325; by class water.parser.ParseDataset$MultiFileParseTask; class water.DException$DistributedException: from /<IP_ADDRESS>:54325; by class water.parser.ParseDataset$MultiFileParseTask$DistributedParse; class java.lang.NullPointerException: null at water.persist.PersistManager.load(PersistManager.java:141) at water.Value.loadPersist(Value.java:226) at water.Value.memOrLoad(Value.java:123) at water.Value.get(Value.java:137) at water.fvec.Vec.chunkForChunkIdx(Vec.java:794) at water.fvec.ByteVec.chunkForChunkIdx(ByteVec.java:18) at water.fvec.ByteVec.chunkForChunkIdx(ByteVec.java:14) at water.MRTask.compute2(MRTask.java:426) at water.MRTask.compute2(MRTask.java:398)
This error output displays if the input file is not present on all nodes. Because of the way that Sparkling Water distributes data, the input file is required on all nodes (including remote), not just the primary node. Make sure there is a copy of the input file on all the nodes, then try again.
Are there any drawbacks to using Sparkling Water compared to standalone H2O?
The version of H2O embedded in Sparkling Water is the same as the standalone version.
How do I use Sparkling Water from the Spark shell?
There are two methods:
$SPARK_HOME/bin/spark-shell --packages ai.h2o:sparkling-water-core_2.10:1.3.3
or
bin/sparkling-shell
The software distribution provides example scripts in the examples/scripts
directory:
bin/sparkling-shell -i examples/scripts/chicagoCrimeSmallShell.script.scala
For either method, initialize H2O as shown in the following example:
import org.apache.spark.h2o._ val h2oContext = new H2OContext(sc).start()
After successfully launching H2O, the following output displays:
Sparkling Water Context: * number of executors: 3 * list of used executors: (executorId, host, port) ------------------------ (1,Michals-MBP.0xdata.loc,54325) (0,Michals-MBP.0xdata.loc,54321) (2,Michals-MBP.0xdata.loc,54323) ------------------------ Open H2O Flow in browser: http://<IP_ADDRESS>:54327 (CMD + click in Mac OSX)
How do I use H2O with Spark Submit?
Spark Submit is for submitting self-contained applications. For more information, refer to the Spark documentation.
First, initialize H2O:
import org.apache.spark.h2o._ val h2oContext = new H2OContext(sc).start()
The Sparkling Water distribution provides several examples of self-contained applications built with Sparkling Water. To run the examples:
bin/run-example.sh ChicagoCrimeAppSmall
The "magic" behind run-example.sh
is a regular Spark Submit:
$SPARK_HOME/bin/spark-submit ChicagoCrimeAppSmall --packages ai.h2o:sparkling-water-core_2.10:1.3.3 --packages ai.h2o:sparkling-water-examples_2.10:1.3.3
How do I use Sparkling Water with Databricks cloud?
Sparkling Water compatibility with Databricks cloud is still in development.
How do I develop applications with Sparkling Water?
For a regular Spark application (a self-contained application as described in the Spark documentation), the app needs to initialize H2OServices
via H2OContext
:
import org.apache.spark.h2o._ val h2oContext = new H2OContext(sc).start()
For more information, refer to the Sparkling Water development documentation.
How do I connect to Sparkling Water from R or Python?
After starting H2OServices
by starting H2OContext
, point your client to the IP address and port number specified in H2OContext
.
To tunnel between servers (for example, due to firewalls):
The port number chosen here is arbitrary; yours may be different.
$ java -jar h2o.jar -port 55599
This returns output similar to the following:
irene@mr-0x3:~/target$ java -jar h2o.jar -port 55599 04:48:58.053 main INFO WATER: ----- H2O started ----- 04:48:58.055 main INFO WATER: Build git branch: master 04:48:58.055 main INFO WATER: Build git hash: 64fe68c59ced5875ac6bac26a784ce210ef9f7a0 04:48:58.055 main INFO WATER: Build git describe: 64fe68c 04:48:58.055 main INFO WATER: Build project version: <IP_ADDRESS>999 04:48:58.055 main INFO WATER: Built by: 'Irene' 04:48:58.055 main INFO WATER: Built on: 'Wed Sep 4 07:30:45 PDT 2013' 04:48:58.055 main INFO WATER: Java availableProcessors: 4 04:48:58.059 main INFO WATER: Java heap totalMemory: 0.47 gb 04:48:58.059 main INFO WATER: Java heap maxMemory: 6.96 gb 04:48:58.060 main INFO WATER: ICE root: '/tmp' 04:48:58.081 main INFO WATER: Internal communication uses port: 55600 + Listening for HTTP and REST traffic on + http://<IP_ADDRESS>:55599/ 04:48:58.109 main INFO WATER: H2O cloud name: 'irene' 04:48:58.109 main INFO WATER: (v<IP_ADDRESS>999) 'irene' on /<IP_ADDRESS>:55599, discovery address /230 .252.255.19:59132 04:48:58.111 main INFO WATER: Cloud of size 1 formed [/<IP_ADDRESS>:55599] 04:48:58.247 main INFO WATER: Log dir: '/tmp/h2ologs'
ssh -L 55577:localhost:55599<EMAIL_ADDRESS>You are now using H2O from localhost:55577, but the instance of H2O is running on the remote server (in this case the server with the ip address 192.168.1.xxx) at port number 55599.
To see this in action note that the web UI is pointed at localhost:55577, but that the cluster status shows the cluster running on <IP_ADDRESS>:55599.


Let's try implementing the PRPL pattern with HTML files only.
Try navigating to the second page, which I have prefetched.
Then, try navigating to the third page, which I have not prefetched.


Crazy for Cookies: A taste of the Phuket cookie-themed suite decked out with fresh baked choco chip bar, dough-scented amenities
by Coco TravelSure, you like cookies. But do you like them so much that you would plan a whole trip where the experience revolves around cookies? We’re talking not only sinking your teeth into free flow cookies, but also surrounding yourself with a cookie aesthetic and an overwhelming scent of cookies. Full. Cookie. Immersion.
That’s the whole concept of the “world’s first cookie-themed suite”, an experiential stay at the DoubleTree by Hilton Phuket Banthai Resort.
DoubleTree by Hilton has really leaned in hard to its cookie branding — their whole thing is warm, freshly baked cookies upon check-in. They’ve been doing it since the 1980s and even have a chief cookie executive officer (COO).
Anyway, enough cookie history, and back to Phuket.
The whole reason for this cookie-themed suite is to mark (or rather, market) the launch of the hotel’s Phuket location which opened on Sept. 5 of this year. The cookie suite is just a short-term promotional stunt that will live on until Dec. 31, 2019.
A look at the photos of the cookie suite are surprisingly more **tasteful** (bada-bing) than we would’ve expected, in so much as that we were expecting a more kitschy setup from anything with such a strong theme.
A vacation in this suite comes with a bar of gooey cookies, cookie bathrobes and plushies, and a beach kit with a custom cookie beach umbrella and towels, we’re told.
There’s also cookie-scented candles and body-scrubs — just so you can really inhale the sweet cookie aroma with every move.
The 3D2N package, ranges from THB7500 to THB10,000 (US$249 to US$332).
What intrigues us perhaps the most of all though are the Pad Thai and Coconut-flavored cookies that are unique to the Phuket property.
Personally, we do love our cookies but we’re not about to fly to Phuket just for a full-on cookie immersion. However, if you happen to be planning a trip to Phuket before the year’s end and make it to the cookie suite, please let us know in the comments how those novelty cookies taste.
FIND IT:
Cookie-Themed Suite at DoubleTree by Hilton Phuket Banthai Resort
94 Thaveewong Rd, Patong Beach, Phuket
+66-76-340850
MORE FROM COCO TRAVEL
Airbnb’s No.3 must-visit place in the world? Buriram, of course.
Origin + Bloom is the stylish new patisserie serving bakes, desserts, sandwiches, and coffees
Rice is Nice: Where to enjoy Thailand’s rustic travel fad (Maps)


GOLDFINGER (1964) A film review by Andrew Hicks Copyright 1996 Andrew Hicks / Fatboy Productions
GOLDFINGER (1964) ***1/2
Here it is, the best James Bond movie out there, with DIAMONDS ARE FOREVER coming in a close second. It just makes me wonder why all the Sean Connery movies in the series couldn't be like this. The first two weren't (DR.  The formula that's utilized in all the other 007 films--death traps, chases, explosions, intriguing villains with plans for world conquest, girls, girls, girls--click together especially well here, making it the standout episode of the series.
Goldfinger is certainly an intriguing villain.  In the beginning of the movie, he has his secretary watch a card game through binoculars and tell him over a radio transmitter what cards the other man is holding. Bond thwarts that racket and later takes Goldfinger for five thousand pounds by utilizing some trickery of his own to win a game of golf. Goldfinger gets him back by capturing Bond halfway through the movie and taking him back to his hideout, where he tells him all about his plan to loot the gold reserve at Fort Knox. That's always the single biggest mistake of Bond villains--the inability to keep their damn mouths shut.
Bond remains in captivity for the second half of the movie, mingling with other memorable villains on the Goldfinger compound as he repeatedly tries to escape. There's Oddjob, a beefy Korean who never talks, choosing instead to express himself through decapitating people by using his tophat as a frisbee.  Let's change that to "guts.") to resist Bond's advances. He soon changes her mind, though, by forcing himself on her and making her his third conquest of the movie. Could the 60's have been a more groovy decade?
GOLDFINGER takes the already-worn Bond formula to new levels. The death trap where a laser is advancing toward Bond's crotch (the Vasectomy of DEATH!) is one of the most tense scenes in the series, as is the movie's climax, involving Bond, an atomic bomb and a pair of handcuffs (which just happened to be left over from Bond's date the night before). While other 007 movies utilizing these elements have come off looking campy and ridiculous, this one works almost all the time. Well, there is a scene in the movie where planes drop nerve gas on an entire army and they all fall over simultaneously, but you have to give the director credit for trying.
Visit the Movie Critic at LARGE website at http://www.missouri.edu/~c667778/movies.html
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


This example shows you how to extend Flotr. But before you begin, it's important to know how Flotr is structured. Flotr consists of two important parts. The first one is the Flotr object. This object acts like a namespace for all utility functions, just to be sure it doesn't collide with the environment.
Finished? Go to the example index page, play with the playground or read the Flotr Documentation Pages.


--- layout: post title: no title date: '2016-12-18T23:03:14+01:00' categories: - Storyboards - Sketches picture_url: https://film-Storyboards.tumblr.com/post/154663697191 ---


WITNESS LIST State, Federal & International Relations Committee March 20, 2001-8:00A HB 541 On: James, Daniel (TX Adjutant Generals Department) Scribner, John (Major General Daniel James III) Registering, but not testifying: For: Pyeatt, Dale (National Guard Association of Texas) HB 3097 For: Dewhurst, David (TX General Land Office, TX Veterans Land Board) Patterson, Jerry (Texas Coalition of Veterans Organizations) On: Martin, Rusty (TX General Land Office, TX Veterans Land Board) HCR 201 For: Brieden, John (The American Legion) Palmquist, Michael (The American Legion) HJR 82 For: Dewhurst, David (TX General Land Office, TX Veterans Land Board) Patterson, Jerry (Texas Coalition of Veterans Organizations) On: Martin, Rusty (TX General Land Office, TX Veterans Land Board)


BluejayError
public enum BluejayError
Errors specific to Bluejay.
-
Bluetooth is either turned off or unavailable.
Declaration
Swift
case bluetoothUnavailable
-
Bluejay does not support another scanning request if Bluejay is still scanning.
Declaration
Swift
case multipleScanNotSupported
-
Bluejay does not support another connection request if Bluejay is already connected or still connecting.
Declaration
Swift
case multipleConnectNotSupported
-
Bluejay does not support another disconnection request if Bluejay is still disconnecting.
Declaration
Swift
case multipleDisconnectNotSupported
-
A connection request in Bluejay has timed out.
Declaration
Swift
case connectionTimedOut
-
Bluejay is not connected to a peripheral.
Declaration
Swift
case notConnected
-
A Bluetooth service is not found.
Declaration
Swift
case missingService(ServiceIdentifier)
-
A Bluetooth characteristic is not found.
Declaration
Swift
case missingCharacteristic(CharacteristicIdentifier)
-
A Bluetooth operation is cancelled.
Declaration
Swift
case cancelled
-
Bluejay disconnect is called.
Declaration
Swift
case explicitDisconnect
-
Bluejay disconnected unexpectedly.
Declaration
Swift
case unexpectedDisconnect
-
A disconnection operation is queued.
Declaration
Swift
case disconnectQueued
-
An attempt to listen on a characteristic has timed out.
Declaration
Swift
case listenTimedOut
-
An attempt to read a characteristic has failed.
Declaration
Swift
case readFailed
-
An attempt to write a characteristic has failed.
Declaration
Swift
case writeFailed
-
An attempt to read a value from a characteristic has returned no data unexpectedly.
Declaration
Swift
case missingData
-
An attempt to read a range of data has failed due to incorrect bounds or an unexpected length.
Declaration
Swift
case dataOutOfBounds(start: Int, length: Int, count: Int)
-
An unexpected peripheral is cached and retrieved from CoreBluetooth.
Declaration
Swift
case unexpectedPeripheral(PeripheralIdentifier)
-
iOS will not continue scanning in the background if allow duplicates is turned on.
Declaration
Swift
case allowDuplicatesInBackgroundNotSupported
-
iOS will not continue scanning in the background if no service identifiers are specified.
Declaration
Swift
case missingServiceIdentifiersInBackground
-
Bluejay does not support further Bluetooth operations while a Bluejay background task is still running.
Declaration
Swift
case backgroundTaskRunning
-
Bluejay does not support another Bluejay background task when there is already one that is still running.
Declaration
Swift
case multipleBackgroundTaskNotSupported
-
Indefinite flush will not exit.
Declaration
Swift
case indefiniteFlush
-
Bluejay has stopped.
Declaration
Swift
case stopped
-
Bluejay cannot perform certain actions when background restoration is still in progress.
Declaration
Swift
case backgroundRestorationInProgress
-
Startup background task has expired during state restoration.
Declaration
Swift
case startupBackgroundTaskExpired
-
The original listen declared that duplicated listens are not allowed.
Declaration
Swift
case multipleListenTrapped
-
The original listen declared that it can be replaced by a new listen.
Declaration
Swift
case multipleListenReplaced
-
Declaration
Swift
public var errorDescription: String? { get }
-
Declaration
Swift
public static var errorDomain: String { get }
-
Declaration
Swift
public var errorCode: Int { get }
-
Declaration
Swift
public var errorUserInfo: [String : Any] { get }


|
KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
|
The InPlaneVertexMorphingMapper extends the standard Vertex Morphing approach by restricting the shape update of nodes to an in-plane motion only. More...
Public Member Functions | |
| def | __init__ (self, origin_model_part, destination_model_part, settings) |
| def | GetDefaultInPlaneSettings (cls) |
| def | Initialize (self) |
| def | Update (self) |
| def | Map (self, origin_variable, destination_variable) |
| def | InverseMap (self, destination_variable, origin_variable) |
Public Attributes | |
| settings | |
| origin_model_part | |
| destination_model_part | |
| vm_mapper | |
| background_mesh | |
| spacial_mapper | |
The InPlaneVertexMorphingMapper extends the standard Vertex Morphing approach by restricting the shape update of nodes to an in-plane motion only.
The nodes are only allowed to float on a predefined background mesh. The background mesh can be the initial mesh of the design surface, or another mesh describing the same geometry (ideally also filling holes in the surface). This is especially important if the design surface extends during the optimization.
Limitations:
| def mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.__init__ | ( | self, | |
| origin_model_part, | |||
| destination_model_part, | |||
| settings | |||
| ) |
| def mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.GetDefaultInPlaneSettings | ( | cls | ) |
| def mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.Initialize | ( | self | ) |
| def mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.InverseMap | ( | self, | |
| destination_variable, | |||
| origin_variable | |||
| ) |
| def mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.Map | ( | self, | |
| origin_variable, | |||
| destination_variable | |||
| ) |
| def mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.Update | ( | self | ) |
| mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.background_mesh |
| mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.destination_model_part |
| mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.origin_model_part |
| mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.settings |
| mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.spacial_mapper |
| mapping.in_plane_vertex_morphing_mapper.InPlaneVertexMorphingMapper.vm_mapper |


Planet Sick-Boy: http://www.sick-boy.com "We Put the SIN in Cinema"
© Copyright 2001 Planet Sick-Boy. All Rights Reserved.
It's easy to predict the ending of formulaic films, but Australia's Russian Doll takes the cake. Anyone with a brief synopsis and half a brain can deduce every twist and turn without ever prying themselves from the couch. It's the old, simple story of Boy meets Girl, Boy hates Girl, Boy is forced to spend time with Girl, Boy falls in love with Girl. Does this kind of thing happen often enough in real life to justify the number of films that share that premise?
The Boy is Harvey (Hugo Weaving, The Matrix), a private investigator who specializes in catching cheating spouses. Harvey has a girlfriend to whom he is about to propose, but learns she's involved with one of the men he's investigating.
In the meantime, the Girl, who we will come to know as Katia (Natalia Novikova), has just come to Australia from St. Petersberg, planning to meet and marry the man she's been communicating with over the Internet for several months. When Katia gets to his house, the man is dead, and she begins to have an affair with a married man named Ethan (David Wenham), who happens to be Harvey's best friend.
You can practically fill in the blanks yourself. Katia is going to be deported unless she marries someone, and the horny Ethan convinces Harvey to be her faux beau. After all, he does have an extra bedroom.  They have various barriers to overcome, like language ("Where do you keep the shits?" "In the toilet." "No, the shits for the bed.") and religion (Harvey must convert to Judaism for the wedding) before the romantic sparks begin to fly.
If you think Doll sounds a bit like Green Card, you're not too far off. It's predictable, but thankfully short (unlike, say, A Knight's Tale or The Mummy Returns, which both clock in over 30 minutes longer than Doll). Weaving does well as the harried sad sack who looks as if he'll crumble from the weight of the lies he keeps piling atop other lies. Doll isn't a bad film at all, but it's something we've already seen a bunch of times already.
1:27 - R for some sexuality and language
========== X-RAMR-ID: 29042 X-Language: en X-RT-ReviewID: 219348 X-RT-TitleID: 1105264 X-RT-SourceID: 595 X-RT-AuthorID: 1146
The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


This page extends async background post-rendering to accept a cleanup function.
The column asyncPostRender property sets a function to manipulate the cell DOM node directly.
The new column asyncPostRenderCleanup property sets a function to properly clean up the data
and/or events created in the render phase.
Post processed nodes are detached from the DOM rather then deleted, and the detached node is queued
for cleanup using the same time-delayed technique that is used for rendering.
It is still important to make sure that post-processing and cleanup of rows doesn't take too long.
SlickGrid will figure out what and when needs to be updated for you.
The example below is a list of 500 rows with a title and 5 integer cells followed by graphical representation of
these integers.
The graph is drawn using a CANVAS element in the background.
The grid is editable, so you can edit the numbers and see the changes reflected (almost) immediately in the graph.
The graph cell behaves just like an ordinary cell and can be resized/reordered.
The more heavyweight jQuery Sparklines 2.x is used in this example because it requires explicit jQuery cleanup and
will leak memory if the DOM node is instead directly deleted.
This example page logs cleanup and render operations to the console to allow easy confirmation of the order of
operations, but this is not recommended except in the case of debugging.
Post-render cleanup must be enabled using the option enableAsyncPostRenderCleanup. If post-rendering is
enabled with the enableAsyncPostRender option, but cleanup is not enabled, then SlickGrid will directly
remove DOM nodes. This way is more efficient where post-rendered nodes do not require explicit resource cleanup.


Amazingly, there have been a few remakes of Carl Theodor Dreyer's passionate, powerful film, "The Passion of Joan of Arc." I say amazingly because I am hard pressed to think anyone could make a superior film or come up with a better actress than Maria Renee Falconetti as the tortured, wounded, saintly Joan. Ingrid Bergman was not bad but let's face it: Falconetti is reason enough to believe that saints do exist.
Dreyer's film begins with the inquisition of Joan at her trial after being captured. Essentially, she is a farm girl who becomes a warrior. She is questioned in regards to her faith and where it stems from and if she feels God put her in her place to save France or if she is the Devil's handiwork. The inquisitors include mostly judges and orthodox theologians who watch every word and gesture Joan makes with relish. They try to provoke her, and they foolishly think that an illiterate nineteen year-old would have little faith or much understanding of her actions. They are surprised by her responses to say the least.
When Joan is asked who taught her the Lord's prayer, she sheds tears at the remembrance of her mother. When asked the most difficult question, if she is in a state of grace, she responds that she does not know if she is, but she hopes God will grant her grace and salvation. This is naturally considered blasphemy by the judges.
The undying power of "The Passion of Joan of Arc" is Carl Dreyer's attentive direction and superbly mobile camera, showing endless tracking shots and exquisite close-ups. There are lots of canted angles and little sense of space, mainly because it is constricted by the use of several close-ups. Most of these close-ups are of the judges, often showing them as monstrous and ugly when questioning or spitting at poor Joan. There are of course many extreme close-ups of Joan, sometimes allowing for lots of headroom to accentuate the high ceiling of the cathedrals. This kind of composition is rightfully disorienting, and it works in conveying Joan's own subjective disorientation. The visual language is incredible considering the film was made back in 1928, and it further establishes Dreyer as a principal artist of the silent film era and beyond with classic films like "Vampyr" and "Day of Wrath."
Of course, the majority of the film's success belongs to Maria Renee Falconetti as St. Joan, who never made another film since. She invigorates the sympathetic and pained soul of the martyred Joan as fully as anyone can imagine. Falconetti shows the enlightenment, the emotional wounds, the startled eyes as if hinting that she had seen God, the flowing tears, the sly smiles, and the gradual acceptance of her fate. This Joan suffers greatly as we see her faint while she stares at a wheel of spikes, and at another point, she is bled with a needle to cure a fever.
"Passion of Joan of Arc" is one of the greatest films ever made, as passionate and soulful a portrait of a scorned woman as you can imagine. Falconetti's performance is one of the most enlightening, on par with Gulietta Massina's work in "La Strada" - two of the foremost performances of the 20th century. Having seen the film three times, I confess that the restoration of this print, which includes illuminating music by Richard Einhorn titled "Voices of Light," adds enormously to the crescendo of the tragic finale that seals the fate of St. Joan. This is as vivid and human as films get.
For more reviews, check out JERRY AT THE MOVIES at http://buffs.moviething.com/buffs/faust/
E-mail me with any questions, concerns or general complaints at<EMAIL_ADDRESS>or at<EMAIL_ADDRESS>The review above was posted to the
rec.arts.movies.reviews newsgroup (de.rec.film.kritiken for German reviews).
The Internet Movie Database accepts no responsibility for the contents of the
review and has no editorial control. Unless stated otherwise, the copyright
belongs to the author.
Please direct comments/criticisms of the review to relevant newsgroups.
Broken URLs inthe reviews are the responsibility of the author.
The formatting of the review is likely to differ from the original due
to ASCII to HTML conversion.
Related links: index of all rec.arts.movies.reviews reviews


--- layout: default title: Project Chrono - An Open-Source Physics Engine ---
Chrono is a physics-based modelling and simulation infrastructure based on a platform-independent open-source design implemented in C++. A {% include module.html first="PROJECT" second="CHRONO" %} library can be embedded in a software project to simulate, for instance, wheeled and tracked vehicles operating on deformable terrains, robots, mechatronic systems, compliant mechanisms, and fluid solid interaction phenomena. Systems can be made of rigid and flexible/compliant parts with constraints, motors and contacts; parts can have three-dimensional shapes for collision detection.
There is also a Python version of Chrono,PyChrono.
Chrono is cross-platform, open source, and released under a BSD-3 license.
Access to {% include module.html first="PROJECT" second="CHRONO" %} source code.
How to install and compile.
Main documentation page.
Find answers to your questions.
We can help with your projects.
A simpler alternative to C++ programming: use the Python language to exploit the capabilities of Chrono.
PyChrono is the new Python wrapper of the Chrono simulation library. It is cross-platform, open source, and distributed as pre-compiled binaries using Anaconda. Using Chrono in Python is as easy as installing the Anaconda PyChrono package and typing import pychrono in your preferred Python IDE.
You can use PyChrono together with many other Python libraries: plot using MayaVi, postprocess with NumPy, train AI neural networks with TensorFlow, etc.


Learn the sounds of English
Learn the basic sounds and improve your pronunciation skills! This article will help you to do so.
07.07.2019
5 comments'In' 'at' and 'on' with time expressions
At the weekend, in spring, on Saturday. Learning which preposition to use with which time expression can be difficult. But don't worry, all is explained in this article. And we have lots of activities to help you practise...
06.07.2019
2 commentsBasic grammar guide
Present Simple or Present Perfect? Learn the basics of speaking English in a correct way in this article.
05.07.2019
7 commentsHow do you ask questions in English?
How are you? A pretty simple question, huh? Learn how to ask questions in English in this article.
04.07.2019
3 comments


I am a fulltime Open Source Supporter.I'm currently living from Miraj, India. I graduated with a Bacholer's Degree Computer Sicence and Engineering from Rajarambapu Institute of Technology,Islampur, India.
I also am a part of a number of cells in my college which not only helped me to develop my basic skills but also helpd me to develop my personality on the whole. To name few I was a part of SPEED i.e is Student's Platform for Engineering Education Development and also worked as an enthusiastic Open Source contributor.In my college life, projects that helped me appreciate the Python programming language and programming in general, which you can find on my Github profile. You can also find them in the Projects page.
I also like to occassionally ramble, which you can read about on my blog.
I am @jatanmalde
on Twitter and you can email
me at<EMAIL_ADDRESS>NOTE: If this layout feels familiar to you, it's because I lifted the layout straight out of Bootstrap


"Anna and 3 others have been here.
View trails?"
Square helps you discover the people and places around you using live AR mapping.
Find people who share your interests, compare prices and form new connections.
Heading somewhere worth sharing?
With Piner you get to share your best moments per location allowing friends and followers know what you've been
up to whether they are on or off that location. Piner will notify a friend when they are in an area with your trail,
and guide them through your pins. You can add notes, pictures and videos to your trail.
Sharing 360 degrees videos expands the experience for friends and followers on your trail. These videos are recorded with attached 360 cameras. When on location, moving the device around in playback (or panning in all directions when off location) allows those following your trial relive your exact moments.
Heading somewhere worth sharing?
With Piner you get to share your best moments per location allowing friends and followers know what you've been
up to whether they are on or off that location. Piner will notify a friend when they are in an area with your trail,
and guide them through your pins. You can add notes, pictures and videos to your trail.
Sharing 360 degrees videos expands the experience for friends and followers on your trail. These videos are recorded with attached 360 cameras. When on location, moving the device around in playback (or panning in all directions when off location) allows those following your trial relive your exact moments.


Sorry, the following document could not be found:
http://umanitoba.ca/access_and_privacy/Privacy_Statement.html/
We recommend one of five options:
- use the menu at the top to jump to main pages at the University of Manitoba
- use the search box at the left of the page
- try one of the main folders below:
- correct the path in the Address bar and try again
- or return to the homepage
Please contact the maintainer of the referring page to update the link.


DUP's Peter Robinson returns to election trail to support Emma Little-Pengelly
by Brendan HughesFORMER DUP leader Peter Robinson has returned to the election campaign trail to support Emma Little-Pengelly's bid to retain her Westminster seat.
Mr Robinson was credited as the chief strategist behind Ms Little-Pengelly's campaign when she became South Belfast MP for the Democratic Unionists in 2017.
He was pictured canvassing with his former special adviser and party councillor David Graham earlier this week in the Stranmillis area of the tightly fought constituency.
Posting the selfie on Facebook, she wrote: "Out in Stranmillis all afternoon and still here! Come and say hello if you see us out and about!"
Ms Little-Pengelly is likely to come under pressure in the December 12 poll after Sinn Féin and the Greens stood aside in South Belfast in favour of other pro-Remain parties.
She won South Belfast in 2017 with 13,299 votes, ahead of nearest rival Alasdair McDonnell of the SDLP on 11,303.
The Green Party is backing the SDLP's candidate Claire Hanna for the seat, but she could face competition from Alliance's Paula Bradshaw who came third in 2017 with 7,946 votes.
For 2017's election, Mr Robinson was campaign manager for Ms Little-Pengelly, who was one of his special advisers at Stormont when he was First Minister.
The South Belfast MLA paid tribute in her victory speech to Mr Robinson.
"I know that Peter has come out of retirement to come and support me in this campaign and he has been absolutely invaluable," she had said.
Subscribe to our most read headlines in the evening newsletter


Home
Interests
Favorite Sites
Future Plans
Surprise
Weather
Presentation
Blog
Quiz Monkey
Which Pen is Best?
Fountain Pen
Ballpoint
Rollerball
Which body part is best?
Arm
Leg
Head


Pat's Cookies
Home
Locations
Sales
Contact
Shop
Salmon Cookies!
we made Salmon Cookies with love using this cutter
Salmon Shirt!
Visit one of our locations to get your very own Salmon Shirt!


Package com.jme.texture
Enum Texture.WrapMode
- java.lang.Object
-
- java.lang.Enum<Texture.WrapMode>
-
- com.jme.texture.Texture.WrapMode
-
- All Implemented Interfaces:
java.io.Serializable
,java.lang.Comparable<Texture.WrapMode>
- Enclosing class:
- Texture
public static enum Texture.WrapMode extends java.lang.Enum<Texture.WrapMode>
-
-
Enum Constant Summary
Enum Constants Enum Constant Description BorderClamp
Deprecated.Not supported by OpenGL 3 or OpenGL ES 2Clamp
Deprecated.Not supported by OpenGL 3EdgeClamp
coordinate will be clamped to the range [1/(2N), 1 - 1/(2N)] where N is the size of the texture in the direction of clamping.MirrorBorderClamp
Deprecated.Not supported by OpenGL 3MirrorClamp
Deprecated.Not supported by OpenGL 3MirrorEdgeClamp
Deprecated.Not supported by OpenGL 3MirroredRepeat
Only the fractional portion of the coordinate is considered, but if the integer portion is odd, we'll use 1 - the fractional portion.Repeat
Only the fractional portion of the coordinate is considered.
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static Texture.WrapMode
valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name.static Texture.WrapMode[]
values()
Returns an array containing the constants of this enum type, in the order they are declared.
-
-
-
Enum Constant Detail
-
Repeat
public static final Texture.WrapMode Repeat
Only the fractional portion of the coordinate is considered.
-
MirroredRepeat
public static final Texture.WrapMode MirroredRepeat
Only the fractional portion of the coordinate is considered, but if the integer portion is odd, we'll use 1 - the fractional portion. (Introduced around OpenGL1.4) Falls back on Repeat if not supported.
-
Clamp
@Deprecated public static final Texture.WrapMode Clamp
Deprecated.Not supported by OpenGL 3coordinate will be clamped to [0,1]
-
MirrorClamp
@Deprecated public static final Texture.WrapMode MirrorClamp
Deprecated.Not supported by OpenGL 3mirrors and clamps the texture coordinate, where mirroring and clamping a value f computes:mirrorClamp(f) = min(1, max(1/(2*N), abs(f)))
where N is the size of the one-, two-, or three-dimensional texture image in the direction of wrapping. (Introduced after OpenGL1.4) Falls back on Clamp if not supported.
-
BorderClamp
@Deprecated public static final Texture.WrapMode BorderClamp
Deprecated.Not supported by OpenGL 3 or OpenGL ES 2coordinate will be clamped to the range [-1/(2N), 1 + 1/(2N)] where N is the size of the texture in the direction of clamping. Falls back on Clamp if not supported.
-
MirrorBorderClamp
@Deprecated public static final Texture.WrapMode MirrorBorderClamp
Deprecated.Not supported by OpenGL 3Wrap mode MIRROR_CLAMP_TO_BORDER_EXT mirrors and clamps to border the texture coordinate, where mirroring and clamping to border a value f computes:mirrorClampToBorder(f) = min(1+1/(2*N), max(1/(2*N), abs(f)))
where N is the size of the one-, two-, or three-dimensional texture image in the direction of wrapping." (Introduced after OpenGL1.4) Falls back on BorderClamp if not supported.
-
EdgeClamp
public static final Texture.WrapMode EdgeClamp
coordinate will be clamped to the range [1/(2N), 1 - 1/(2N)] where N is the size of the texture in the direction of clamping. Falls back on Clamp if not supported.
-
MirrorEdgeClamp
@Deprecated public static final Texture.WrapMode MirrorEdgeClamp
Deprecated.Not supported by OpenGL 3mirrors and clamps to edge the texture coordinate, where mirroring and clamping to edge a value f computes:mirrorClampToEdge(f) = min(1-1/(2*N), max(1/(2*N), abs(f)))
where N is the size of the one-, two-, or three-dimensional texture image in the direction of wrapping. (Introduced after OpenGL1.4) Falls back on EdgeClamp if not supported.
-
-
Method Detail
-
values
public static Texture.WrapMode[] values()
Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:for (Texture.WrapMode c : Texture.WrapMode.values()) System.out.println(c);
- Returns:
- an array containing the constants of this enum type, in the order they are declared
-
valueOf
public static Texture.WrapMode valueOf(java.lang.String name)
Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
java.lang.IllegalArgumentException
- if this enum type has no constant with the specified namejava.lang.NullPointerException
- if the argument is null
-
-


Tap to deal. Tap to dismiss.
Help
Quit
Did you use the decision bit?
Yes
No
RedJak7's
Automated Emperor
Start
v1.0.5(0)
How many Blitz cards?
3
4
5
6
7
8
Shuffle


My Team
ManagerName1
Manager
ID: Manager1
Email:
ManagerEmail1
Office number: 12344321
Eng1
Engineer
ID: Eng1ID
Email:
Eng1Email
GitHub:
Eng1GitHub
Int1
Intern
ID: Int1ID
Email:
Int1Email
School:
Int1School
Eng2
Engineer
ID: Eng2ID
Email:
Eng2Email
GitHub:
Eng2GitHub
Int2
Intern
ID: Int2ID
Email:
Int2Email
School:
Int2School


CSS exists to style your HTML — to present your content. The language of
Cascading Style Sheets is somewhat
different to HTML but it remains simple and straightforward.
External CSS Declaration
All pages that linked to that CSS file will get affected.


This is where we perform the necessary actions to create an application
directory for the update command to work properly - files are organized
into the static folder, and yaml files are generated where they can be
found later.
Args:
tools_dir: Path to the SDK tools directory
(typically .../google/appengine/tools)
Returns:
The path to a new temporary directory which contains generated yaml files
and a static file directory. For the most part, the rest of the update and
upload flow can resume identically to Python/PHP/Go applications.
Raises:
CompileError: if compilation of JSPs failed.
ConfigurationError: if the app to be staged has a configuration error.
IOError: if there was an I/O problem, for example when scanning jar files.
| def google.appengine.tools.appcfg_java.JavaAppUpdate.GenerateAppYamlString |
( |
|
self, |
|
|
|
static_file_list, |
|
|
|
api_version = None |
|
) |
| |
Constructs an app.yaml string equivalent to the XML files under WEB-INF.
Args:
static_file_list: a list of strings that are the absolute path names of
static file resources.
api_version: a string that is the Java API version number, or None if
not known or relevant.
Returns:
A string that would have the same effect as the XML files under WEB-INF
if it were the contents of an app.yaml file.
The documentation for this class was generated from the following file:
- code/googleappengine-read-only/python/google/appengine/tools/appcfg_java.py


Ping Pong
About Ping Pong
Created By:
Ian Wilcox
GitHub information
iantwilcox91
link:
https://github.com/iantwilcox91
Lets Play!
Rules
ping pong will count from your number to 1 with the following exceptions:
Numbers divisible by 3 are replaced with "ping"
Numbers divisible by 5 are replaced with "pong"
Numbers divisible by 15 are replaced with "ping-pong"
Enter your number:
GO!


XML Tools features C-based bindings to the GNU libxml2 and libxslt libraries. These are blazing fast parsers. Performance is very impressive compared to rexml (see table to right). If speed is your need, these are good libraries to consider.
| in seconds | libxml | rexml |
|---|---|---|
| opening | 0.003954 | 0.104750 |
| attribute_add | 0.001895 | 0.011114 |
| subelems | 0.000585 | 0.004729 |
| xpath | 0.013269 | 2.981499 |
XML-Tools also includes pure-Ruby libraries suitable to a variety of use cases:
| XML Proof - Unique XML schema language |
| XML Tailor - XML-valid Tals template system |
| TeXML - XML to TeX translation tool |
| TkXML - XML to Tk translation tool for building Tk GUIs via markup |
| RTals - Another Tals templates system (like Zope's) |
| Sqlix - SQL to XML generator |
Each library is in various stages of development. The libxml and libxslt bindings work fairly well, but still need improvements. Some of the other libs currently do not function at all --as they are in need of updating. Everyone is encouraged to contribute.


Global news and events feed for the US markets powered by the Tiingo News API.
Global news and events feed for the US markets powered by the Benzinga News API.
Corporate buyback transaction and intention data feeds powered from insider trading activity pulled from US SEC Filings.
Nightly offical yield curve rates data from the US Department of Treasury. Cached by the QuantConnect team.
Full pipe of raw 10-K and 10-Q SEC filing content for publicly tradable companies, pulled from the US EDGAR SEC Filing website. Cached by the QuantConnect team.
Global macro data on the top 10 countries globally powered by the Trading Economics team.
Energy product export and production numbers for global oil, gas and petroleum products. Cached by the QuantConnect team.
Dozens of economic, central bank, volatility, recession and market index pricing served by FRED. Cached by the QuantConnect team.
Daily volatility index pricing provided by the CBOE and cached by the QuantConnect team.